# fs

***

**1. Read a File Synchronously**

```js
const fs = require('fs');

const data = fs.readFileSync('file.txt', 'utf8');
console.log(data);
```

**2. Read a File Asynchronously**

```js
const fs = require('fs');

fs.readFile('file.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});
```

**3. Write a File Synchronously**

```js
const fs = require('fs');

fs.writeFileSync('file.txt', 'Hello, world!', 'utf8');
```

**4. Write a File Asynchronously**

```js
const fs = require('fs');

fs.writeFile('file.txt', 'Hello, world!', 'utf8', (err) => {
  if (err) throw err;
});
```

**5. Append to a File Synchronously**

```js
const fs = require('fs');

fs.appendFileSync('file.txt', ' and goodbye!', 'utf8');
```

**6. Append to a File Asynchronously**

```js
const fs = require('fs');

fs.appendFile('file.txt', ' and goodbye!', 'utf8', (err) => {
  if (err) throw err;
});
```

**7. Rename a File Synchronously**

```js
const fs = require('fs');

fs.renameSync('old-file.txt', 'new-file.txt');
```

**8. Rename a File Asynchronously**

```js
const fs = require('fs');

fs.rename('old-file.txt', 'new-file.txt', (err) => {
  if (err) throw err;
});
```

**9. Copy a File Synchronously**

```js
const fs = require('fs');

fs.copyFileSync('file.txt', 'copy-of-file.txt');
```

**10. Copy a File Asynchronously**

```js
const fs = require('fs');

fs.copyFile('file.txt', 'copy-of-file.txt', (err) => {
  if (err) throw err;
});
```

**11. Delete a File Synchronously**

```js
const fs = require('fs');

fs.unlinkSync('file.txt');
```

**12. Delete a File Asynchronously**

```js
const fs = require('fs');

fs.unlink('file.txt', (err) => {
  if (err) throw err;
});
```

**13. Create a Directory Synchronously**

```js
const fs = require('fs');

fs.mkdirSync('new-directory');
```

**14. Create a Directory Asynchronously**

```js
const fs = require('fs');

fs.mkdir('new-directory', (err) => {
  if (err) throw err;
});
```

**15. Remove a Directory Synchronously**

```js
const fs = require('fs');

fs.rmdirSync('new-directory');
```

**16. Remove a Directory Asynchronously**

```js
const fs = require('fs');

fs.rmdir('new-directory', (err) => {
  if (err) throw err;
});
```

**17. Read a Directory Synchronously**

```js
const fs = require('fs');

const files = fs.readdirSync('directory');
console.log(files);
```

**18. Read a Directory Asynchronously**

```js
const fs = require('fs');

fs.readdir('directory', (err, files) => {
  if (err) throw err;
  console.log(files);
});
```

**19. Check if a File Exists Synchronously**

```js
const fs = require('fs');

const exists = fs.existsSync('file.txt');
console.log(exists);
```

**20. Check if a File Exists Asynchronously**

```js
const fs = require('fs');

fs.exists('file.txt', (exists) => {
  console.log(exists);
});
```

**21. Get File Metadata Synchronously**

```js
const fs = require('fs');

const stats = fs.statSync('file.txt');
console.log(stats);
```

**22. Get File Metadata Asynchronously**

```js
const fs = require('fs');

fs.stat('file.txt', (err, stats) => {
  if (err) throw err;
  console.log(stats);
});
```

**23. Create a File Stream for Reading**

```js
const fs = require('fs');

const readStream = fs.createReadStream('file.txt');
readStream.on('data', (data) => {
  console.log(data.toString());
});
```

**24. Create a File Stream for Writing**

```js
const fs = require('fs');

const writeStream = fs.createWriteStream('file.txt');
writeStream.write('Hello, world!');
writeStream.end();
```

**25. Pipe a File Stream**

```js
const fs = require('fs');

const readStream = fs.createReadStream('file.txt');
const writeStream = fs.createWriteStream('copy-of-file.txt');
readStream.pipe(writeStream);
```

**26. Watch a File for Changes**

```js
const fs = require('fs');

fs.watch('file.txt', (eventType, filename) => {
  console.log(`Event type: ${eventType}`);
  console.log(`Filename: ${filename}`);
});
```

**27. Unwatch a File**

```js
const fs = require('fs');

const watcher = fs.watch('file.txt');
watcher.close();
```

**28. Get File Size Synchronously**

```js
const fs = require('fs');

const size = fs.statSync('file.txt').size;
console.log(size);
```

**29. Get File Size Asynchronously**

```js
const fs = require('fs');

fs.stat('file.txt', (err, stats) => {
  if (err) throw err;
  console.log(stats.size);
});
```

**30. Get File Modification Date Synchronously**

```js
const fs = require('fs');

const mtime = fs.statSync('file.txt').mtime;
console.log(mtime);
```

**31. Get File Modification Date Asynchronously**

```js
const fs = require('fs');

fs.stat('file.txt', (err, stats) => {
  if (err) throw err;
  console.log(stats.mtime);
});
```

**32. Set File Modification Date Synchronously**

```js
const fs = require('fs');

fs.utimesSync('file.txt', new Date(), new Date());
```

**33. Set File Modification Date Asynchronously**

```js
const fs = require('fs');

fs.utimes('file.txt', new Date(), new Date(), (err) => {
  if (err) throw err;
});
```

**34. Get File Owner Synchronously**

```js
const fs = require('fs');

const uid = fs.statSync('file.txt').uid;
console.log(uid);
```

**35. Get File Owner Asynchronously**

```js
const fs = require('fs');

fs.stat('file.txt', (err, stats) => {
  if (err) throw err;
  console.log(stats.uid);
});
```

**36. Set File Owner Synchronously**

```js
const fs = require('fs');

fs.chownSync('file.txt', 1000, 100);
```

**37. Set File Owner Asynchronously**

```js
const fs = require('fs');

fs.chown('file.txt', 1000, 100, (err) => {
  if (err) throw err;
});
```
