Readonly
fdThe numeric file descriptor managed by the {FileHandle} object.
v10.0.0
Alias of filehandle.writeFile()
.
When operating on file handles, the mode cannot be changed from what it was set
to with fsPromises.open()
. Therefore, this is equivalent to filehandle.writeFile()
.
v10.0.0
Fulfills with undefined
upon success.
Optional
options: null | BufferEncoding | ObjectEncodingOptions & FlagAndOpenModeChanges the ownership of the file. A wrapper for chown(2)
.
v10.0.0
Fulfills with undefined
upon success.
The file's new owner's user id.
The file's new group's group id.
Closes the file handle after waiting for any pending operation on the handle to complete.
import { open } from 'fs/promises';
let filehandle;
try {
filehandle = await open('thefile.txt', 'r');
} finally {
await filehandle?.close();
}
v10.0.0
Fulfills with undefined
upon success.
Unlike the 16 kb default highWaterMark
for a stream.Readable
, the stream
returned by this method has a default highWaterMark
of 64 kb.
options
can include start
and end
values to read a range of bytes from
the file instead of the entire file. Both start
and end
are inclusive and
start counting at 0, allowed values are in the
[0, Number.MAX_SAFE_INTEGER
] range. If start
is
omitted or undefined
, filehandle.createReadStream()
reads sequentially from
the current file position. The encoding
can be any one of those accepted by Buffer
.
If the FileHandle
points to a character device that only supports blocking
reads (such as keyboard or sound card), read operations do not finish until data
is available. This can prevent the process from exiting and the stream from
closing naturally.
By default, the stream will emit a 'close'
event after it has been
destroyed. Set the emitClose
option to false
to change this behavior.
import { open } from 'fs/promises';
const fd = await open('/dev/input/event0');
// Create a stream from some character device.
const stream = fd.createReadStream();
setTimeout(() => {
stream.close(); // This may not close the stream.
// Artificially marking end-of-stream, as if the underlying resource had
// indicated end-of-file by itself, allows the stream to close.
// This does not cancel pending read operations, and if there is such an
// operation, the process may still not be able to exit successfully
// until it finishes.
stream.push(null);
stream.read(0);
}, 100);
If autoClose
is false, then the file descriptor won't be closed, even if
there's an error. It is the application's responsibility to close it and make
sure there's no file descriptor leak. If autoClose
is set to true (default
behavior), on 'error'
or 'end'
the file descriptor will be closed
automatically.
An example to read the last 10 bytes of a file which is 100 bytes long:
import { open } from 'fs/promises';
const fd = await open('sample.txt');
fd.createReadStream({ start: 90, end: 99 });
v16.11.0
Optional
options: CreateReadStreamOptionsoptions
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
open
option to be set to r+
rather than
the default r
. The encoding
can be any one of those accepted by Buffer
.
If autoClose
is set to true (default behavior) on 'error'
or 'finish'
the file descriptor will be closed automatically. If autoClose
is false,
then the file descriptor won't be closed, even if there's an error.
It is the application's responsibility to close it and make sure there's no
file descriptor leak.
By default, the stream will emit a 'close'
event after it has been
destroyed. Set the emitClose
option to false
to change this behavior.
v16.11.0
Optional
options: CreateWriteStreamOptionsForces 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.
Unlike filehandle.sync
this method does not flush modified metadata.
v10.0.0
Fulfills with undefined
upon success.
Reads data from the file and stores that in the given buffer.
If the file is not modified concurrently, the end-of-file is reached when the number of bytes read is zero.
v10.0.0
Fulfills upon success with an object with two properties:
A buffer that will be filled with the file data read.
Optional
offset: null | numberThe location in the buffer at which to start filling.
Optional
length: null | numberThe number of bytes to read.
Optional
position: null | numberThe location where to begin reading data from the file. If null
, data will be read from the current file position, and the position will be updated. If position
is an
integer, the current file position will remain unchanged.
Optional
options: FileReadOptions<T>Asynchronously reads the entire contents of a file.
If options
is a string, then it specifies the encoding
.
The FileHandle
has to support reading.
If one or more filehandle.read()
calls are made on a file handle and then afilehandle.readFile()
call is made, the data will be read from the current
position till the end of the file. It doesn't always read from the beginning
of the file.
v10.0.0
Fulfills upon a successful read with the contents of the file. If no encoding is specified (using options.encoding
), the data is returned as a {Buffer} object. Otherwise, the
data will be a string.
Optional
options: null | { Asynchronously reads the entire contents of a file. The underlying file will not be closed automatically.
The FileHandle
must have been opened for reading.
An object that may contain an optional flag.
If a flag is not provided, it defaults to 'r'
.
Asynchronously reads the entire contents of a file. The underlying file will not be closed automatically.
The FileHandle
must have been opened for reading.
Optional
options: null | BufferEncoding | ObjectEncodingOptions & { An object that may contain an optional flag.
If a flag is not provided, it defaults to 'r'
.
Convenience method to create a readline
interface and stream over the file. For example:
import { open } from 'node:fs/promises';
const file = await open('./some/file/to/read');
for await (const line of file.readLines()) {
console.log(line);
}
v18.11.0
Optional
options: CreateReadStreamOptionsSee filehandle.createReadStream()
for the options.
Experimental
Returns a ReadableStream
that may be used to read the files data.
An error will be thrown if this method is called more than once or is called after the FileHandle
is closed
or closing.
import { open } from 'node:fs/promises';
const file = await open('./some/file/to/read');
for await (const chunk of file.readableWebStream())
console.log(chunk);
await file.close();
While the ReadableStream
will read the file to completion, it will not close the FileHandle
automatically. User code must still call the fileHandle.close()
method.
v17.0.0
Read from a file and write to an array of ArrayBufferView s
v13.13.0, v12.17.0
Fulfills upon success an object containing two properties:
Optional
position: numberThe offset from the beginning of the file where the data should be read from. If position
is not a number
, the data will be read from the current position.
v10.0.0
Fulfills with an {fs.Stats} for the file.
Optional
opts: StatOptions & { Optional
opts: StatOptionsRequest 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.
v10.0.0
Fufills with undefined
upon success.
Truncates the file.
If the file was larger than len
bytes, only the first len
bytes will be
retained in the file.
The following example retains only the first four bytes of the file:
import { open } from 'fs/promises';
let filehandle = null;
try {
filehandle = await open('temp.txt', 'r+');
await filehandle.truncate(4);
} finally {
await filehandle?.close();
}
If the file previously was shorter than len
bytes, it is extended, and the
extended part is filled with null bytes ('\0'
):
If len
is negative then 0
will be used.
v10.0.0
Fulfills with undefined
upon success.
Optional
len: numberWrite buffer
to the file.
The promise is resolved with an object containing two properties:
It is unsafe to use filehandle.write()
multiple times on the same file
without waiting for the promise to be resolved (or rejected). For this
scenario, use filehandle.createWriteStream()
.
On Linux, positional writes do not work when the file is opened in append mode. The kernel ignores the position argument and always appends the data to the end of the file.
v10.0.0
Optional
offset: null | numberThe start position from within buffer
where the data to write begins.
Optional
length: null | numberOptional
position: null | numberThe offset from the beginning of the file where the data from buffer
should be written. If position
is not a number
, the data will be written at the current position.
See the POSIX pwrite(2) documentation for more detail.
Optional
position: null | numberOptional
encoding: null | BufferEncodingAsynchronously writes data to a file, replacing the file if it already exists.data
can be a string, a buffer, an
AsyncIterable or
Iterable object.
The promise is resolved with no arguments upon success.
If options
is a string, then it specifies the encoding
.
The FileHandle
has to support writing.
It is unsafe to use filehandle.writeFile()
multiple times on the same file
without waiting for the promise to be resolved (or rejected).
If one or more filehandle.write()
calls are made on a file handle and then afilehandle.writeFile()
call is made, the data will be written from the
current position till the end of the file. It doesn't always write from the
beginning of the file.
v10.0.0
Optional
options: null | BufferEncoding | ObjectEncodingOptions & FlagAndOpenMode & AbortableWrite an array of ArrayBufferView s to the file.
The promise is resolved with an object containing a two properties:
It is unsafe to call writev()
multiple times on the same file without waiting
for the promise to be resolved (or rejected).
On Linux, positional writes don't work when the file is opened in append mode. The kernel ignores the position argument and always appends the data to the end of the file.
v12.9.0
Optional
position: numberThe offset from the beginning of the file where the data from buffers
should be written. If position
is not a number
, the data will be written at the current
position.
TODO: Add
EventEmitter
close