@@ -230,6 +230,99 @@ try {
230
230
}
231
231
` ` `
232
232
233
+ #### ` filehandle .createReadStream ([options])`
234
+ <!-- YAML
235
+ added: REPLACEME
236
+ -->
237
+
238
+ * ` options` {Object}
239
+ * ` encoding` {string} **Default:** ` null `
240
+ * ` autoClose` {boolean} **Default:** ` true `
241
+ * ` emitClose` {boolean} **Default:** ` true `
242
+ * ` start` {integer}
243
+ * ` end` {integer} **Default:** ` Infinity `
244
+ * ` highWaterMark` {integer} **Default:** ` 64 * 1024 `
245
+ * Returns: {fs.ReadStream}
246
+
247
+ Unlike the 16 kb default ` highWaterMark` for a {stream.Readable}, the stream
248
+ returned by this method has a default ` highWaterMark` of 64 kb.
249
+
250
+ ` options` can include ` start` and ` end` values to read a range of bytes from
251
+ the file instead of the entire file. Both ` start` and ` end` are inclusive and
252
+ start counting at 0, allowed values are in the
253
+ [0, [` Number .MAX_SAFE_INTEGER ` ][]] range. If ` start` is
254
+ omitted or ` undefined ` , ` filehandle .createReadStream ()` reads sequentially from
255
+ the current file position. The ` encoding` can be any one of those accepted by
256
+ {Buffer}.
257
+
258
+ If the ` FileHandle` points to a character device that only supports blocking
259
+ reads (such as keyboard or sound card), read operations do not finish until data
260
+ is available. This can prevent the process from exiting and the stream from
261
+ closing naturally.
262
+
263
+ By default, the stream will emit a ` ' close' ` event after it has been
264
+ destroyed. Set the ` emitClose` option to ` false ` to change this behavior.
265
+
266
+ ` ` ` mjs
267
+ import { open } from ' fs/promises' ;
268
+
269
+ const fd = await open (' /dev/input/event0' );
270
+ // Create a stream from some character device.
271
+ const stream = fd .createReadStream ();
272
+ setTimeout (() => {
273
+ stream .close (); // This may not close the stream.
274
+ // Artificially marking end-of-stream, as if the underlying resource had
275
+ // indicated end-of-file by itself, allows the stream to close.
276
+ // This does not cancel pending read operations, and if there is such an
277
+ // operation, the process may still not be able to exit successfully
278
+ // until it finishes.
279
+ stream .push (null );
280
+ stream .read (0 );
281
+ }, 100 );
282
+ ` ` `
283
+
284
+ If ` autoClose` is false, then the file descriptor won't be closed, even if
285
+ there's an error. It is the application's responsibility to close it and make
286
+ sure there's no file descriptor leak. If ` autoClose` is set to true (default
287
+ behavior), on ` ' error' ` or ` ' end' ` the file descriptor will be closed
288
+ automatically.
289
+
290
+ An example to read the last 10 bytes of a file which is 100 bytes long:
291
+
292
+ ` ` ` mjs
293
+ import { open } from ' fs/promises' ;
294
+
295
+ const fd = await open (' sample.txt' );
296
+ fd .createReadStream ({ start: 90 , end: 99 });
297
+ ` ` `
298
+
299
+ #### ` filehandle .createWriteStream ([options])`
300
+ <!-- YAML
301
+ added: REPLACEME
302
+ -->
303
+
304
+ * ` options` {Object}
305
+ * ` encoding` {string} **Default:** ` ' utf8' `
306
+ * ` autoClose` {boolean} **Default:** ` true `
307
+ * ` emitClose` {boolean} **Default:** ` true `
308
+ * ` start` {integer}
309
+ * Returns: {fs.WriteStream}
310
+
311
+ ` options` may also include a ` start` option to allow writing data at some
312
+ position past the beginning of the file, allowed values are in the
313
+ [0, [` Number .MAX_SAFE_INTEGER ` ][]] range. Modifying a file rather than replacing
314
+ it may require the ` flags` ` open` option to be set to ` r+ ` rather than the
315
+ default ` r` . The ` encoding` can be any one of those accepted by {Buffer}.
316
+
317
+ If ` autoClose` is set to true (default behavior) on ` ' error' ` or ` ' finish' `
318
+ the file descriptor will be closed automatically. If ` autoClose` is false,
319
+ then the file descriptor won't be closed, even if there's an error.
320
+ It is the application's responsibility to close it and make sure there's no
321
+ file descriptor leak.
322
+
323
+ By default, the stream will emit a ` ' close' ` event after it has been
324
+ destroyed. Set the ` emitClose` option to ` false ` to change this behavior.
325
+
233
326
#### ` filehandle .datasync ()`
234
327
<!-- YAML
235
328
added: v10.0.0
@@ -1985,9 +2078,9 @@ changes:
1985
2078
* `end` {integer} **Default:** `Infinity`
1986
2079
* `highWaterMark` {integer} **Default:** `64 * 1024`
1987
2080
* `fs` {Object|null} **Default:** `null`
1988
- * Returns: {fs.ReadStream} See [Readable Stream][].
2081
+ * Returns: {fs.ReadStream}
1989
2082
1990
- Unlike the 16 kb default `highWaterMark` for a readable stream, the stream
2083
+ Unlike the 16 kb default `highWaterMark` for a { stream.Readable} , the stream
1991
2084
returned by this method has a default `highWaterMark` of 64 kb.
1992
2085
1993
2086
`options` can include `start` and `end` values to read a range of bytes from
@@ -2009,8 +2102,7 @@ available. This can prevent the process from exiting and the stream from
2009
2102
closing naturally.
2010
2103
2011
2104
By default, the stream will emit a `'close'` event after it has been
2012
- destroyed, like most `Readable` streams. Set the `emitClose` option to
2013
- `false` to change this behavior.
2105
+ destroyed. Set the `emitClose` option to `false` to change this behavior.
2014
2106
2015
2107
By providing the `fs` option, it is possible to override the corresponding `fs`
2016
2108
implementations for `open`, `read`, and `close`. When providing the `fs` option,
@@ -2106,7 +2198,7 @@ changes:
2106
2198
* `emitClose` {boolean} **Default:** `true`
2107
2199
* `start` {integer}
2108
2200
* `fs` {Object|null} **Default:** `null`
2109
- * Returns: {fs.WriteStream} See [Writable Stream][].
2201
+ * Returns: {fs.WriteStream}
2110
2202
2111
2203
`options` may also include a `start` option to allow writing data at some
2112
2204
position past the beginning of the file, allowed values are in the
@@ -2121,8 +2213,7 @@ It is the application's responsibility to close it and make sure there's no
2121
2213
file descriptor leak.
2122
2214
2123
2215
By default, the stream will emit a `'close'` event after it has been
2124
- destroyed, like most `Writable` streams. Set the `emitClose` option to
2125
- `false` to change this behavior.
2216
+ destroyed. Set the `emitClose` option to `false` to change this behavior.
2126
2217
2127
2218
By providing the `fs` option it is possible to override the corresponding `fs`
2128
2219
implementations for `open`, `write`, `writev` and `close`. Overriding `write()`
@@ -6921,8 +7012,6 @@ the file contents.
6921
7012
[MSDN-Rel-Path]: https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#fully-qualified-vs-relative-paths
6922
7013
[MSDN-Using-Streams]: https://docs.microsoft.com/en-us/windows/desktop/FileIO/using-streams
6923
7014
[Naming Files, Paths, and Namespaces]: https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file
6924
- [Readable Stream]: stream.md#class-streamreadable
6925
- [Writable Stream]: stream.md#class-streamwritable
6926
7015
[` AHAFS ` ]: https://developer.ibm.com/articles/au-aix_event_infrastructure/
6927
7016
[` Buffer .byteLength ` ]: buffer.md#static-method-bufferbytelengthstring-encoding
6928
7017
[` FSEvents` ]: https://developer.apple.com/documentation/coreservices/file_system_events
0 commit comments