Usage
import * as mod from "node:fs";
The node:fs
module enables interacting with the file system in a
way modeled on standard POSIX functions.
To use the promise-based APIs:
import * as fs from 'node:fs/promises';
To use the callback and sync APIs:
import * as fs from 'node:fs';
All file system operations have synchronous, callback, and promise-based forms, and are accessible using both CommonJS syntax and ES6 Modules (ESM).
A class representing a directory stream.
A representation of a directory entry, which can be a file or a subdirectory
within the directory, as returned by reading from an fs.Dir
. The
directory entry is a combination of the file name and file type pairs.
Instances of fs.ReadStream
are created and returned using the createReadStream function.
- Extends
stream.Writable
Tests a user's permissions for the file or directory specified by path
.
The mode
argument is an optional integer that specifies the accessibility
checks to be performed. mode
should be either the value fs.constants.F_OK
or a mask consisting of the bitwise OR of any of fs.constants.R_OK
,fs.constants.W_OK
, and fs.constants.X_OK
(e.g.fs.constants.W_OK | fs.constants.R_OK
). Check File access constants
for
possible values of mode
.
Synchronously tests a user's permissions for the file or directory specified
by path
. The mode
argument is an optional integer that specifies the
accessibility checks to be performed. mode
should be either the valuefs.constants.F_OK
or a mask consisting of the bitwise OR of any offs.constants.R_OK
, fs.constants.W_OK
, and
fs.constants.X_OK
(e.g.fs.constants.W_OK | fs.constants.R_OK
). Check File access constants
for
possible values of mode
.
Asynchronously append data to a file, creating the file if it does not yet
exist. data
can be a string or a Buffer
.
Synchronously append data to a file, creating the file if it does not yet
exist. data
can be a string or a Buffer
.
Asynchronously changes the permissions of a file. No arguments other than a possible exception are given to the completion callback.
Asynchronously changes owner and group of a file. No arguments other than a possible exception are given to the completion callback.
Closes the file descriptor. No arguments other than a possible exception are given to the completion callback.
Closes the file descriptor. Returns undefined
.
Asynchronously copies src
to dest
. By default, dest
is overwritten if it
already exists. No arguments other than a possible exception are given to the
callback function. Node.js makes no guarantees about the atomicity of the copy
operation. If an error occurs after the destination file has been opened for
writing, Node.js will attempt to remove the destination.
Synchronously copies src
to dest
. By default, dest
is overwritten if it
already exists. Returns undefined
. Node.js makes no guarantees about the
atomicity of the copy operation. If an error occurs after the destination file
has been opened for writing, Node.js will attempt to remove the destination.
Asynchronously copies the entire directory structure from src
to dest
,
including subdirectories and files.
Synchronously copies the entire directory structure from src
to dest
,
including subdirectories and files.
Unlike the 16 KiB default highWaterMark
for a stream.Readable
, the stream
returned by this method has a default highWaterMark
of 64 KiB.
options
may also include a start
option to allow writing data at some
position past the beginning of the file, allowed values are in the
[0, Number.MAX_SAFE_INTEGER
] range. Modifying a file rather than
replacing it may require the flags
option to be set to r+
rather than the
default w
. The encoding
can be any one of those accepted by Buffer
.
Returns true
if the path exists, false
otherwise.
Sets the permissions on the file. No arguments other than a possible exception are given to the completion callback.
Sets the permissions on the file. Returns undefined
.
Sets the owner of the file. No arguments other than a possible exception are given to the completion callback.
Sets the owner of the file. Returns undefined
.
Forces all currently queued I/O operations associated with the file to the
operating system's synchronized I/O completion state. Refer to the POSIX fdatasync(2)
documentation for details. No arguments other
than a possible
exception are given to the completion callback.
Forces all currently queued I/O operations associated with the file to the
operating system's synchronized I/O completion state. Refer to the POSIX fdatasync(2)
documentation for details. Returns undefined
.
Invokes the callback with the fs.Stats
for the file descriptor.
Retrieves the fs.Stats
for the file descriptor.
Request that all data for the open file descriptor is flushed to the storage
device. The specific implementation is operating system and device specific.
Refer to the POSIX fsync(2)
documentation for more detail. No arguments other
than a possible exception are given to the completion callback.
Truncates the file descriptor. No arguments other than a possible exception are given to the completion callback.
Truncates the file descriptor. Returns undefined
.
Synchronous version of futimes. Returns undefined
.
Set the owner of the symbolic link. No arguments other than a possible exception are given to the completion callback.
Set the owner for the path. Returns undefined
.
Retrieves the fs.Stats
for the symbolic link referred to by the path.
The callback gets two arguments (err, stats)
where stats
is a fs.Stats
object. lstat()
is identical to stat()
, except that if path
is a symbolic
link, then the link itself is stat-ed, not the file that it refers to.
Change the file system timestamps of the symbolic link referenced by path
.
Returns undefined
, or throws an exception when parameters are incorrect or
the operation fails. This is the synchronous version of lutimes.
Asynchronously creates a directory.
Creates a unique temporary directory.
Returns the created directory path.
Returns a Blob
whose data is backed by the given file.
Asynchronously open a directory. See the POSIX opendir(3)
documentation for
more details.
Synchronously open a directory. See opendir(3)
.
Returns an integer representing the file descriptor.
Tests a user's permissions for the file or directory specified by path
.
The mode
argument is an optional integer that specifies the accessibility
checks to be performed. mode
should be either the value fs.constants.F_OK
or a mask consisting of the bitwise OR of any of fs.constants.R_OK
,fs.constants.W_OK
, and fs.constants.X_OK
(e.g.fs.constants.W_OK | fs.constants.R_OK
). Check File access constants
for
possible values of mode
.
Asynchronously append data to a file, creating the file if it does not yet
exist. data
can be a string or a Buffer
.
Changes the permissions of a file.
Changes the ownership of a file.
Asynchronously copies src
to dest
. By default, dest
is overwritten if it
already exists.
Asynchronously copies the entire directory structure from src
to dest
,
including subdirectories and files.
Changes the ownership on a symbolic link.
Creates a new link from the existingPath
to the newPath
. See the POSIX link(2)
documentation for more detail.
Equivalent to fsPromises.stat()
unless path
refers to a symbolic link,
in which case the link itself is stat-ed, not the file that it refers to.
Refer to the POSIX lstat(2)
document for more detail.
Changes the access and modification times of a file in the same way as fsPromises.utimes()
, with the difference that if the path refers to a
symbolic link, then the link is not dereferenced: instead, the timestamps of
the symbolic link itself are changed.
Asynchronously creates a directory.
Creates a unique temporary directory. A unique directory name is generated by
appending six random characters to the end of the provided prefix
. Due to
platform inconsistencies, avoid trailing X
characters in prefix
. Some
platforms, notably the BSDs, can return more than six random characters, and
replace trailing X
characters in prefix
with random characters.
Opens a FileHandle
.
Asynchronously open a directory for iterative scanning. See the POSIX opendir(3)
documentation for more detail.
Reads the contents of a directory.
Asynchronously reads the entire contents of a file.
Reads the contents of the symbolic link referred to by path
. See the POSIX readlink(2)
documentation for more detail. The promise is
fulfilled with thelinkString
upon success.
Determines the actual location of path
using the same semantics as thefs.realpath.native()
function.
Renames oldPath
to newPath
.
Removes files and directories (modeled on the standard POSIX rm
utility).
Removes the directory identified by path
.
Creates a symbolic link.
Truncates (shortens or extends the length) of the content at path
to len
bytes.
If path
refers to a symbolic link, then the link is removed without affecting
the file or directory to which that link refers. If the path
refers to a file
path that is not a symbolic link, the file is deleted. See the POSIX unlink(2)
documentation for more detail.
Change the file system timestamps of the object referenced by path
.
Returns an async iterator that watches for changes on filename
, where filename
is either a file or a directory.
Asynchronously writes data to a file, replacing the file if it already exists.data
can be a string, a buffer, an
AsyncIterable, or an
Iterable object.
Read data from the file specified by fd
.
Reads the contents of a directory. The callback gets two arguments (err, files)
where files
is an array of the names of the files in the directory excluding'.'
and '..'
.
Reads the contents of the directory.
Asynchronously reads the entire contents of a file.
Returns the contents of the path
.
Reads the contents of the symbolic link referred to by path
. The callback gets
two arguments (err, linkString)
.
Returns the symbolic link's string value.
Returns the number of bytesRead
.
Read from a file specified by fd
and write to an array of ArrayBufferView
s
using readv()
.
Asynchronously computes the canonical pathname by resolving .
, ..
, and
symbolic links.
Asynchronous realpath(3)
.
Returns the resolved pathname.
Asynchronously rename file at oldPath
to the pathname provided
as newPath
. In the case that newPath
already exists, it will
be overwritten. If there is a directory at newPath
, an error will
be raised instead. No arguments other than a possible exception are
given to the completion callback.
Renames the file from oldPath
to newPath
. Returns undefined
.
Asynchronously removes files and directories (modeled on the standard POSIX rm
utility). No arguments other than a possible exception are given to the
completion callback.
Synchronously removes files and directories (modeled on the standard POSIX rm
utility). Returns undefined
.
Synchronous statfs(2)
. Returns information about the mounted file system which
contains path
.
Creates the link called path
pointing to target
. No arguments other than a
possible exception are given to the completion callback.
Returns undefined
.
Truncates the file. No arguments other than a possible exception are
given to the completion callback. A file descriptor can also be passed as the
first argument. In this case, fs.ftruncate()
is called.
Truncates the file. Returns undefined
. A file descriptor can also be
passed as the first argument. In this case, fs.ftruncateSync()
is called.
Asynchronously removes a file or symbolic link. No arguments other than a possible exception are given to the completion callback.
Synchronous unlink(2)
. Returns undefined
.
Stop watching for changes on filename
. If listener
is specified, only that
particular listener is removed. Otherwise, all listeners are removed,
effectively stopping watching of filename
.
Change the file system timestamps of the object referenced by path
.
Returns undefined
.
Watch for changes on filename
, where filename
is either a file or a
directory.
Watch for changes on filename
. The callback listener
will be called each
time the file is accessed.
Write buffer
to the file specified by fd
.
When file
is a filename, asynchronously writes data to the file, replacing the
file if it already exists. data
can be a string or a buffer.
Returns undefined
.
Write an array of ArrayBufferView
s to the file specified by fd
usingwritev()
.
For detailed information, see the documentation of the asynchronous version of this API: writev.
Test whether or not the given path exists by checking with the file system.
Then call the callback
argument with either true or false:
Changes the permissions on a symbolic link. No arguments other than a possible exception are given to the completion callback.
Changes the permissions on a symbolic link. Returns undefined
.
Changes the permissions on a symbolic link.
A fs.Stats
object provides information about a file.
Provides information about a mounted file system.
Class: fs.StatWatcher
Watch for changes on filename
. The callback listener
will be called each
time the file is accessed.
Valid types for path values in "fs".
Constant for fs.copyFile. Flag indicating the destination file should not be overwritten if it already exists.
Constant for fs.copyFile. copy operation will attempt to create a copy-on-write reflink. If the underlying platform does not support copy-on-write, then a fallback copy mechanism is used.
Constant for fs.copyFile. Copy operation will attempt to create a copy-on-write reflink. If the underlying platform does not support copy-on-write, then the operation will fail with an error.
Constant for fs.access(). File is visible to the calling process.
Constant for fs.open(). Flag indicating that data will be appended to the end of the file.
Constant for fs.open(). Flag indicating to create the file if it does not already exist.
Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O.
Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory.
Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O with write operations waiting for data integrity.
Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists.
constant for fs.open(). Flag indicating reading accesses to the file system will no longer result in an update to the atime information associated with the file. This flag is available on Linux operating systems only.
Constant for fs.open(). Flag indicating that if path identifies a terminal device, opening the path shall not cause that terminal to become the controlling terminal for the process (if the process does not already have one).
Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link.
Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible.
Constant for fs.open(). Flag indicating to open a file for read-only access.
Constant for fs.open(). Flag indicating to open a file for read-write access.
Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to.
Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O.
Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero.
Constant for fs.open(). Flag indicating to open a file for write-only access.
Constant for fs.access(). File can be read by the calling process.
Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file.
Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file.
Constant for fs.Stats mode property for determining a file's type. File type constant for a directory.
Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe.
Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link.
Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code.
Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file.
Constant for fs.Stats mode property for determining a file's type. File type constant for a socket.
Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group.
Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others.
Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner.
Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group.
Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others.
Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner.
Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group.
Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others.
Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner.
Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group.
Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others.
Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner.
When set, a memory file mapping is used to access the file. This flag is available on Windows operating systems only. On other operating systems, this flag is ignored.
Constant for fs.access(). File can be written by the calling process.
Constant for fs.access(). File can be executed by the calling process.
Synchronous lstat(2) - Get file status. Does not dereference symbolic links.
Synchronous stat(2) - Get file status.