The fs
module in Node.js offers a range of valuable functions to interact with the file system efficiently.
To begin using the fs
module, you don’t need to install anything. Since it’s a part of the Node core, you can simply require it using the following code snippet:
const fs = require('fs')
Once you have required the module, you gain access to a wide array of methods, including:
fs.access()
: Checks if a file exists and if Node has the necessary permissions to access it.fs.appendFile()
: Appends data to a file, creating the file if it doesn’t already exist.fs.chmod()
: Alters the permissions of a specified file using the provided filename. Related:fs.lchmod()
,fs.fchmod()
fs.chown()
: Modifies the owner and group details of the specified file using the given filename. Related:fs.fchown()
,fs.lchown()
fs.close()
: Closes a file descriptor.fs.copyFile()
: Copies a file.fs.createReadStream()
: Establishes a readable file stream.fs.createWriteStream()
: Sets up a writable file stream.fs.link()
: Creates a new hard link to a file.fs.mkdir()
: Generates a new folder.fs.mkdtemp()
: Creates a temporary directory.fs.open()
: Sets the file mode.fs.readdir()
: Reads the contents of a directory.fs.readFile()
: Reads the content of a file. Related:fs.read()
fs.readlink()
: Retrieves the value of a symbolic link.fs.realpath()
: Resolves relative file path pointers (such as.
and..
) to the full path.fs.rename()
: Renames a file or folder.fs.rmdir()
: Removes a folder.fs.stat()
: Retrieves the status of the file specified by the given filename. Related:fs.fstat()
,fs.lstat()
fs.symlink()
: Establishes a new symbolic link to a file.fs.truncate()
: Truncates the file identified by the given filename to the specified length. Related:fs.ftruncate()
fs.unlink()
: Removes a file or symbolic link.fs.unwatchFile()
: Ceases watching for changes on a file.fs.utimes()
: Adjusts the timestamp of the file specified by the given filename. Related:fs.futimes()
fs.watchFile()
: Begins watching for changes on a file. Related:fs.watch()
fs.writeFile()
: Writes data to a file. Related:fs.write()
An interesting aspect of the fs
module is that all its methods are asynchronous by default, but they can also function synchronously by appending Sync
to their names.
For instance:
fs.rename()
fs.renameSync()
fs.write()
fs.writeSync()
This distinction significantly impacts your application flow.
Note that Node 10 introduces experimental support for a promise-based API as well. To learn more, visit here.
To illustrate the usage of the fs.rename()
method, let’s consider the asynchronous API with a callback:
const fs = require('fs')
fs.rename('before.json', 'after.json', (err) => {
if (err) {
return console.error(err)
}
// Success
})
Alternatively, you can employ the synchronous API using a try/catch block to handle errors:
const fs = require('fs')
try {
fs.renameSync('before.json', 'after.json')
// Success
} catch (err) {
console.error(err)
}
The crucial distinction here is that the execution of your script will be blocked in the second example until the file operation is successful.
Tags: Node.js, file system, fs module