Node.js is known for its non-blocking, event-driven architecture that makes it efficient for handling I/O operations. One of the key features of Node.js is its ability to interact with the file system. This is facilitated by the File System module, which provides an API for working with files and directories on your computer.
What is the File System Module?
The fs module in Node.js is a built-in module that allows developers to work with the file system. It provides methods to read, write, update, and delete files and directories.
Key Features
- Asynchronous and synchronous methods.
- Support for various file operations (e.g., reading, writing, deleting).
- Ability to watch for changes in files and directories.
Getting Started
To use the fs module, you need to import it into your Node.js application. Here’s how:
const fs = require('fs');
Common Operations
Reading Files
You can read files using both asynchronous and synchronous methods.
Asynchronous File Reading
fs.readFile('example.txt', 'utf8', (err, data) => { if (err) { console.error(err); return; } console.log(data); });
Synchronous File Reading
try { const data = fs.readFileSync('example.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); }
Writing Files
The fs module allows you to write data to files as well.
Asynchronous File Writing
fs.writeFile('output.txt', 'Hello, World!', (err) => { if (err) { console.error(err); return; } console.log('File has been written'); });
Synchronous File Writing
try { fs.writeFileSync('output.txt', 'Hello, World!'); console.log('File has been written'); } catch (err) { console.error(err); }
Appending to Files
You can also append data to an existing file using the appendFile method.
fs.appendFile('output.txt', '\nAppended text', (err) => { if (err) { console.error(err); return; } console.log('Data appended to file'); });
Deleting Files
To delete a file, use the unlink method.
fs.unlink('output.txt', (err) => { if (err) { console.error(err); return; } console.log('File deleted'); });
Working with Directories
You can also create and remove directories.
Creating a Directory
fs.mkdir('new_directory', (err) => { if (err) { console.error(err); return; } console.log('Directory created'); });
Removing a Directory
fs.rmdir('new_directory', (err) => { if (err) { console.error(err); return; } console.log('Directory removed'); });
Error Handling
Always include error handling when performing file operations to ensure your application can handle any issues gracefully.
Watching for File Changes
The fs.watch method allows you to monitor changes to files and directories.
fs.watch('example.txt', (eventType, filename) => { if (filename) { console.log(`File changed: ${filename}`); } });
Conclusion
The Node.js File System module is a powerful tool that enables developers to interact with the file system effectively. By using its asynchronous methods, you can ensure that your application remains non-blocking and efficient. Whether you are reading, writing, or monitoring files, the fs module provides a comprehensive API for your needs.