Nodejs Fs Module
π
2026-06-22 | π Node.js
Node.js fs Module | Rookie Tutorial
[Node.js Built-in Modules](#)
* * *
The fs (File System) module is a core built-in module in Node.js used for interacting with the file system.
The fs module provides a series of methods for handling file operations such as reading, writing, and deleting.
The fs module is one of the most commonly used modules in Node.js development, especially in scenarios requiring local file processing.
* * *
## How to use the fs module?
To use the fs module, you first need to import it:
const fs = require('fs');
Starting from Node.js 14, you can also use the ES6 import syntax:
## Example
const fs = require('fs');// CommonJS way
// or
import fs from 'fs';// ES Module way
* * *
## Main Methods of the fs Module
### 1. File Reading
#### Synchronous File Read (readFileSync)
## Example
const data = fs.readFileSync('example.txt','utf8');
console.log(data);
* `'example.txt'`: The file path to read
* `'utf8'`: Specifies the encoding format (optional)
* The synchronous method blocks code execution until the file read is complete
#### Asynchronous File Read (readFile)
## Example
fs.readFile('example.txt','utf8',(err, data)=>{
if(err)throw err;
console.log(data);
});
* The asynchronous method does not block code execution
* Results are handled via a callback function
* Error-first callback is a common pattern in Node.js
### 2. File Writing
#### Synchronous File Write (writeFileSync)
## Example
fs.writeFileSync('output.txt','Hello, Node.js!');
#### Asynchronous File Write (writeFile)
## Example
fs.writeFile('output.txt','Hello, Node.js!',(err)=>{
if(err)throw err;
console.log('File saved');
});
### 3. File Appending
#### Synchronous Append (appendFileSync)
## Example
fs.appendFileSync('log.txt','New log contentn');
#### Asynchronous Append (appendFile)
## Example
fs.appendFile('log.txt','New log contentn',(err)=>{
if(err)throw err;
});
### 4. File Status Check (stat)
## Example
fs.stat('example.txt',(err, stats)=>{
if(err)throw err;
console.log(`File size: ${stats.size} bytes`);
console.log(`Creation time: ${stats.birthtime}`);
console.log(`Is file: ${stats.isFile()}`);
console.log(`Is directory: ${stats.isDirectory()}`);
});
### 5. File Deletion
#### Synchronous Delete (unlinkSync)
## Example
fs.unlinkSync('fileToDelete.txt');
#### Asynchronous Delete (unlink)
## Example
fs.unlink('fileToDelete.txt',(err)=>{
if(err)throw err;
console.log('File deleted');
});
* * *
## Promise and async/await Support
Node.js 10+ provides the fs/promises module, supporting Promise-style APIs:
## Example
const fs = require('fs').promises;
async function readFile(){
try{
const data = await fs.readFile('example.txt','utf8');
console.log(data);
}catch(err){
console.error('Error reading file:', err);
}
}
readFile();
* * *
## Stream File Operations
For large files, using Streams can improve performance:
### Read Stream
## Example
const readStream = fs.createReadStream('largeFile.txt','utf8');
readStream.on('data',(chunk)=>{
console.log('Data received:', chunk.length);
});
readStream.on('end',()=>{
console.log('Read complete');
});
readStream.on('error',(err)=>{
console.error('Read error:', err);
});
### Write Stream
## Example
const writeStream = fs.createWriteStream('output.txt');
writeStream.write('First line of datan');
writeStream.write('Second line of datan');
writeStream.end('Last line of data');
writeStream.on('finish',()=>{
console.log('Write complete');
});
writeStream.on('error',(err)=>{
console.error('Write error:', err);
});
* * *
## Directory Operations
### Create Directory
## Example
fs.mkdir('newFolder',(err)=>{
if(err)throw err;
console.log('Directory created');
});
### Read Directory Contents
## Example
fs.readdir('./',(err, files)=>{
if(err)throw err;
console.log('Current directory contents:', files);
});
### Delete Directory
## Example
fs.rmdir('emptyFolder',(err)=>{
if(err)throw err;
console.log('Directory deleted');
});
* * *
## Best Practices
1. **Prefer Asynchronous Methods**: Avoid blocking the event loop
2. **Error Handling**: Always handle potential errors
3. **Use Streams for Large Files**: Improve performance
4. **Path Handling**: Use the path module for cross-platform path issues
5. **Permission Checks**: Check file/directory permissions before operations
* * *
## Practical Application Example
### File Copy Function
## Example
const fs = require('fs');
function copyFile(source, target, cb){
const readStream = fs.createReadStream(source);
const writeStream = fs.createWriteStream(target);
readStream.on('error', cb);
writeStream.on('error', cb);
readStream.on('close',()=>{
writeStream.end();
cb(null);
});
readStream.pipe(writeStream);
}
copyFile('source.txt','target.txt',(err)=>{
if(err)return console.error('Copy failed:', err);
console.log('File copied successfully');
});
* * Node.js Built-in Modules](#)