3
私はイベント駆動型プログラミングのいくつかの基本を学びたいと思っています。だから、私は大規模なバイナリファイルを読み込み、何かをしているが、ブロッキングコールをしないでプログラムを書くことを試みている。私は、次が出ている:ブロッキングループなしでノードjsの大きなバイナリファイルを読み取るには?
var fs = require('fs');
var BUFFER_SIZE = 1024;
var path_of_file = "somefile"
fs.open(path_of_file, 'r', (error_opening_file, fd) =>
{
if (error_opening_file)
{
console.log(error_opening_file.message);
return;
}
var buffer = new Buffer(BUFFER_SIZE);
fs.read(fd, buffer, 0, BUFFER_SIZE, 0, (error_reading_file, bytesRead, buffer) =>
{
if (error_reading_file)
{
console.log(error_reading_file.message);
return;
}
// do something e.g. print or write to another file
})
})
私は完全なファイルを読むためにwhileループを配置する必要があります知っているが、上記のコードでは、私は、ファイルのちょうど最初の1024のバイトを読んでいますし、どのように定式化することができませんブロッキングループを使用せずにファイルの読み取りを続行します。どうしたらいい?
ご回答いただきありがとうございます。 1回の通話で読み取るデータの量は?この機能はメモリ内の完全なファイルをフェッチしませんか?それはテキストファイルだけを読むことを意味するのではないのですか? –
私は 'readFile'と一度にファイル全体を読み込むのは間違いでした。私は 'createReadStream'を使う答えを編集しました。これはチャンクを返すでしょう。各チャンクは65536バイトです。 'readFile'も' createReadStream'もテキストファイルに限られていません。彼らはどんなタイプのファイルでも読むことができます。 – rgvassar