Nodejs についに file.readLines() が組み込まれました
ログ ファイルの解析など、大きなテキスト ファイルを扱う場合、効率とパフォーマンス上の理由から、すべてをメモリに読み込むのではなく、コンテンツを 1 行ずつ読み込み/反復処理することが常に推奨されます。Nodejs では、1 行ずつ読み込む方法は、日常的なユーザーの観点からはハッキーで低レベルすぎるように見えるため、常に面倒でした。ただし、最新バージョンの v18.11.0
にマージされた PR のおかげで、FileHandle.prototype.readLines
が組み込まれ、非常に便利に使用できるようになりました。
昔ながらの面倒な方法
import fs from 'node:fs';
import readline from 'node:readline';
const fileStream = fs.createReadStream('input.txt');
const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
});
for await (const line of rl) {
console.log(`Line from file: ${line}`);
}
今では便利な方法
import { open } from 'node:fs/promises';
const file = await open('input.txt');
for await (const line of file.readLines()) {
console.log(`Line from file: ${line}`);
}
PS: このメソッドを PR のコア Node.js ライブラリに組み込むべきかどうかについては、いくつかの議論と討論がありました。エンド ユーザーの観点からは、これは素晴らしい追加機能であり、大きなテキスト ファイルの処理に Node.js をより便利に使用できるようになり、readline
モジュールから方法を覚えるために必要な精神的負担が軽減され、readline
のラッパー メソッドにすぎないにもかかわらず、コード行数が 50% 削減されると思います。
参考文献