Node.js provides comprehensive file system operations beyond basic reading and writing. This article covers various file manipulation methods avaliable through the fs module.
Checking File Existence
The fs.exists() and fs.existsSync() methods verify whether a file exists at the specified path:
const fs = require('fs');
// Asynchronous existence check
fs.exists('/path/to/file.txt', (exists) => {
console.log('File exists:', exists);
});
// Synchronous existence check
const fileExists = fs.existsSync('/path/to/file.txt');
console.log('File exists:', fileExists);
Retrieving File Information
The fs.stat() and fs.statSync() methods return a Stats object containing file metadata:
const fs = require('fs');
fs.stat('example.js', (error, fileStats) => {
if (error) {
console.error('Error retrieving file stats:', error);
return;
}
console.log('File size:', fileStats.size);
console.log('Created:', fileStats.birthtime);
console.log('Modified:', fileStats.mtime);
console.log('Is file:', fileStats.isFile());
console.log('Is directory:', fileStats.isDirectory());
});
Directory Traversal
Reucrsive directory traverasl can be implemented using fs.readdir():
const fs = require('fs');
const path = require('path');
function traverseDirectory(dirPath) {
console.log('Directory:', dirPath);
fs.readdir(dirPath, (err, items) => {
if (err) {
console.error('Error reading directory:', err);
return;
}
items.forEach(item => {
const fullPath = path.join(dirPath, item);
fs.stat(fullPath, (err, stats) => {
if (stats.isFile()) {
console.log('File:', fullPath);
} else if (stats.isDirectory()) {
traverseDirectory(fullPath);
}
});
});
});
}
traverseDirectory('./');
File Deletion
Files can be removed using fs.unlink():
const fs = require('fs');
fs.unlink('temp_file.txt', (err) => {
if (err) {
console.error('Deletion failed:', err);
} else {
console.log('File successfully deleted');
}
});
File Truncation
The fs.truncate() method reduces file size by cutting off data beyond the specified length:
const fs = require('fs');
fs.truncate('large_file.log', 1024, (err) => {
if (err) {
console.error('Truncation failed:', err);
} else {
console.log('File truncated to 1KB');
}
});
Directory Management
Create and remove directories using fs.mkdir() and fs.rmdir():
const fs = require('fs');
// Create directory
fs.mkdir('new_directory', (err) => {
if (err) {
console.error('Directory creation failed:', err);
return;
}
console.log('Directory created');
// Remove directory
fs.rmdir('new_directory', (err) => {
if (err) {
console.error('Directory removal failed:', err);
} else {
console.log('Directory removed');
}
});
});
File Renaming and Moving
The fs.rename() method can rename files or move them to different locations:
const fs = require('fs');
fs.rename('old_name.txt', 'new_name.txt', (err) => {
if (err) {
console.error('Rename failed:', err);
} else {
console.log('File renamed successfully');
}
});
File Monitoring
Monitor file changes using fs.watchFile():
const fs = require('fs');
fs.watchFile('monitored_file.txt',
{ persistent: true, interval: 2000 },
(current, previous) => {
console.log('File modified at:', current.mtime);
console.log('Previous modification:', previous.mtime);
}
);