| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -515,6 +515,46 @@ If one or more `filehandle.read()` calls are made on a file handle and then a | |||
| 515 | 515 | position till the end of the file. It doesn't always read from the beginning | |
| 516 | 516 | of the file. | |
| 517 | 517 | ||
| 518 | + #### `filehandle.readLines([options])` | ||
| 519 | + | ||
| 520 | + <!-- YAML | ||
| 521 | + added: REPLACEME | ||
| 522 | + --> | ||
| 523 | + | ||
| 524 | + * `options` {Object} | ||
| 525 | + * `encoding` {string} **Default:** `null` | ||
| 526 | + * `autoClose` {boolean} **Default:** `true` | ||
| 527 | + * `emitClose` {boolean} **Default:** `true` | ||
| 528 | + * `start` {integer} | ||
| 529 | + * `end` {integer} **Default:** `Infinity` | ||
| 530 | + * `highWaterMark` {integer} **Default:** `64 * 1024` | ||
| 531 | + * Returns: {readline.InterfaceConstructor} | ||
| 532 | + | ||
| 533 | + Convenience method to create a `readline` interface and stream over the file. | ||
| 534 | + See [`filehandle.createReadStream()`][] for the options. | ||
| 535 | + | ||
| 536 | + ```mjs | ||
| 537 | + import { open } from 'node:fs/promises'; | ||
| 538 | + | ||
| 539 | + const file = await open('./some/file/to/read'); | ||
| 540 | + | ||
| 541 | + for await (const line of file.readLines()) { | ||
| 542 | + console.log(line); | ||
| 543 | + } | ||
| 544 | + ``` | ||
| 545 | + | ||
| 546 | + ```cjs | ||
| 547 | + const { open } = require('node:fs/promises'); | ||
| 548 | + | ||
| 549 | + (async () => { | ||
| 550 | + const file = await open('./some/file/to/read'); | ||
| 551 | + | ||
| 552 | + for await (const line of file.readLines()) { | ||
| 553 | + console.log(line); | ||
| 554 | + } | ||
| 555 | + })(); | ||
| 556 | + ``` | ||
| 557 | + | ||
| 518 | 558 | #### `filehandle.readv(buffers[, position])` | |
| 519 | 559 | ||
| 520 | 560 | <!-- YAML | |
@@ -7635,6 +7675,7 @@ the file contents. | |||
| 7635 | 7675 | [`ReadDirectoryChangesW`]: https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-readdirectorychangesw | |
| 7636 | 7676 | [`UV_THREADPOOL_SIZE`]: cli.md#uv_threadpool_sizesize | |
| 7637 | 7677 | [`event ports`]: https://illumos.org/man/port_create | |
| 7678 | + [`filehandle.createReadStream()`]: #filehandlecreatereadstreamoptions | ||
| 7638 | 7679 | [`filehandle.createWriteStream()`]: #filehandlecreatewritestreamoptions | |
| 7639 | 7680 | [`filehandle.writeFile()`]: #filehandlewritefiledata-options | |
| 7640 | 7681 | [`fs.access()`]: #fsaccesspath-mode-callback | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -102,6 +102,7 @@ const kUnref = Symbol('kUnref'); | |||
| 102 | 102 | const kLocked = Symbol('kLocked'); | |
| 103 | 103 | ||
| 104 | 104 | const { kUsePromises } = binding; | |
| 105 | + const { Interface } = require('internal/readline/interface'); | ||
| 105 | 106 | const { | |
| 106 | 107 | JSTransferable, kDeserialize, kTransfer, kTransferList | |
| 107 | 108 | } = require('internal/worker/js_transferable'); | |
@@ -181,6 +182,13 @@ class FileHandle extends EventEmitterMixin(JSTransferable) { | |||
| 181 | 182 | return fsCall(readFile, this, options); | |
| 182 | 183 | } | |
| 183 | 184 | ||
| 185 | + readLines(options = undefined) { | ||
| 186 | + return new Interface({ | ||
| 187 | + input: this.createReadStream(options), | ||
| 188 | + crlfDelay: Infinity, | ||
| 189 | + }); | ||
| 190 | + } | ||
| 191 | + | ||
| 184 | 192 | stat(options) { | |
| 185 | 193 | return fsCall(fstat, this, options); | |
| 186 | 194 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -114,6 +114,9 @@ const expectedModules = new Set([ | |||
| 114 | 114 | 'NativeModule internal/process/warning', | |
| 115 | 115 | 'NativeModule internal/promise_hooks', | |
| 116 | 116 | 'NativeModule internal/querystring', | |
| 117 | + 'NativeModule internal/readline/callbacks', | ||
| 118 | + 'NativeModule internal/readline/interface', | ||
| 119 | + 'NativeModule internal/readline/utils', | ||
| 117 | 120 | 'NativeModule internal/socketaddress', | |
| 118 | 121 | 'NativeModule internal/source_map/source_map_cache', | |
| 119 | 122 | 'NativeModule internal/stream_base_commons', | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,40 @@ | |||
| 1 | + import '../common/index.mjs'; | ||
| 2 | + import tmpdir from '../common/tmpdir.js'; | ||
| 3 | + | ||
| 4 | + import assert from 'node:assert'; | ||
| 5 | + import { open, writeFile } from 'node:fs/promises'; | ||
| 6 | + import path from 'node:path'; | ||
| 7 | + | ||
| 8 | + tmpdir.refresh(); | ||
| 9 | + | ||
| 10 | + const filePath = path.join(tmpdir.path, 'file.txt'); | ||
| 11 | + | ||
| 12 | + await writeFile(filePath, '1\n\n2\n'); | ||
| 13 | + | ||
| 14 | + let file; | ||
| 15 | + try { | ||
| 16 | + file = await open(filePath); | ||
| 17 | + | ||
| 18 | + let i = 0; | ||
| 19 | + for await (const line of file.readLines()) { | ||
| 20 | + switch (i++) { | ||
| 21 | + case 0: | ||
| 22 | + assert.strictEqual(line, '1'); | ||
| 23 | + break; | ||
| 24 | + | ||
| 25 | + case 1: | ||
| 26 | + assert.strictEqual(line, ''); | ||
| 27 | + break; | ||
| 28 | + | ||
| 29 | + case 2: | ||
| 30 | + assert.strictEqual(line, '2'); | ||
| 31 | + break; | ||
| 32 | + | ||
| 33 | + default: | ||
| 34 | + assert.fail(); | ||
| 35 | + break; | ||
| 36 | + } | ||
| 37 | + } | ||
| 38 | + } finally { | ||
| 39 | + await file?.close(); | ||
| 40 | + } | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments