Node.js File System
Node.js includes fs module to access physical file system. The fs module is responsible for all the asynchronous or synchronous file I/O operations.
Let's see some of the common I/O operation examples using fs module.
Reading a File
Use the fs.readFile()
method to read the physical file asynchronously.
fs.readFile(fileName [,options], callback)
Parameter Description:
- filename: Full path and name of the file as a string.
- options: The options parameter can be an object or string which can include encoding and flag. The default encoding is utf8 and default flag is
"r"
. - callback: A function with two parameters
err
andfd
. This will get called whenreadFile
operation completes.
The following example demonstrates reading existing TestFile.txt
asynchronously.
var fs = require('fs');
fs.readFile('TestFile.txt', function (err, data) {
if (err)
throw err;
console.log(data);
});
The above example reads TestFile.txt
(on Windows) asynchronously and executes callback function when read operation completes. This read operation either throws an error or completes successfully. The err parameter contains error information if any. The data parameter contains the content of the specified file.
The following is a sample TextFile.txt file.
This is test file to test fs module of Node.js
Now, run the above example and see the result as shown below.
C:\> node server.jsThis is test file to test fs module of Node.js
Use the fs.readFileSync()
method to read file synchronously, as shown below.
var fs = require('fs');
var data = fs.readFileSync('dummyfile.txt', 'utf8');
console.log(data);
Writing a File
Use the fs.writeFile()
method to write data to a file. If file already exists then it overwrites the existing content otherwise it creates a new file and writes data into it.
fs.writeFile(filename, data[, options], callback)
Parameter Description:
- filename: Full path and name of the file as a string.
- Data: The content to be written in a file.
- options: The options parameter can be an object or string which can include encoding, mode and flag. The default encoding is utf8 and default flag is
"r"
. - callback: A function with two parameters err and fd. This will get called when write operation completes.
The following example creates a new file called test.txt and writes "Hello World" into it asynchronously.
var fs = require('fs');
fs.writeFile('test.txt', 'Hello World!', function (err) {
if (err)
console.log(err);
else
console.log('Write operation complete.');
});
In the same way, use the fs.appendFile()
method to append the content to an existing file.
var fs = require('fs');
fs.appendFile('test.txt', 'Hello World!', function (err) {
if (err)
console.log(err);
else
console.log('Append operation complete.');
});
Open File
Alternatively, you can open a file for reading or writing using the fs.open()
method.
fs.open(path, flags[, mode], callback)
Parameter Description:
- path: Full path with name of the file as a string.
- Flag: The flag to perform operation
- Mode: The mode for read, write or readwrite. Defaults to 0666 readwrite.
- callback: A function with two parameters
err
andfd
. This will get called when file open operation completes.
Flags
The following table lists all the flags which can be used in read/write operation.
Flag | Description |
---|---|
r | Open file for reading. An exception occurs if the file does not exist. |
r+ | Open file for reading and writing. An exception occurs if the file does not exist. |
rs | Open file for reading in synchronous mode. |
rs+ | Open file for reading and writing, telling the OS to open it synchronously. See notes for 'rs' about using this with caution. |
w | Open file for writing. The file is created (if it does not exist) or truncated (if it exists). |
wx | Like 'w' but fails if path exists. |
w+ | Open file for reading and writing. The file is created (if it does not exist) or truncated (if it exists). |
wx+ | Like 'w+' but fails if path exists. |
a | Open file for appending. The file is created if it does not exist. |
ax | Like 'a' but fails if path exists. |
a+ | Open file for reading and appending. The file is created if it does not exist. |
ax+ | Like 'a+' but fails if path exists. |
The following example opens an existing file and reads its content.
var fs = require('fs');
fs.open('TestFile.txt', 'r', function (err, fd) {
if (err) {
return console.error(err);
}
var buffr = new Buffer(1024);
fs.read(fd, buffr, 0, buffr.length, 0, function (err, bytes) {
if (err) throw err;
// Print only read bytes to avoid junk.
if (bytes > 0) {
console.log(buffr.slice(0, bytes).toString());
}
// Close the opened file.
fs.close(fd, function (err) {
if (err) throw err;
});
});
});
</code></pre>
<div className="card-footer example-footer"></div>
</div>
</div>
<h2>Delete File</h2>
<p>Use the <code>fs.unlink()</code> method to delete an existing file.</p>
<div className="card syntax">
<div className="card-header syntax-title">
Signature:
</div>
<div className="panel-body">
<pre className="csharpcode bg-white"><code>fs.unlink(path, callback);
The following example deletes an existing file.
var fs = require('fs');
fs.unlink('test.txt', function () {
console.log('File Deleted Successfully.');
});
Important method of fs module
Method | Description |
---|---|
fs.readFile(fileName [,options], callback) | Reads existing file. |
fs.writeFile(filename, data[, options], callback) | Writes to the file. If file exists then overwrite the content otherwise creates new file. |
fs.open(path, flags[, mode], callback) | Opens file for reading or writing. |
fs.rename(oldPath, newPath, callback) | Renames an existing file. |
fs.chown(path, uid, gid, callback) | Asynchronous chown. |
fs.stat(path, callback) | Returns fs.stat object which includes important file statistics. |
fs.link(srcpath, dstpath, callback) | Links file asynchronously. |
fs.unlink(path, callback); | Delete a file. |
fs.symlink(destination, path[, type], callback) | Symlink asynchronously. |
fs.rmdir(path, callback) | Renames an existing directory. |
fs.mkdir(path[, mode], callback) | Creates a new directory. |
fs.readdir(path, callback) | Reads the content of the specified directory. |
fs.utimes(path, atime, mtime, callback) | Changes the timestamp of the file. |
fs.exists(path, callback) | Determines whether the specified file exists or not. |
fs.access(path[, mode], callback) | Tests a user's permissions for the specified file. |
fs.appendFile(file, data[, options], callback) | Appends new content to the existing file. |
Visit Node.js documentation for more information on fs module.