何か足りないのでしょうか、それとも node.js の標準ファイル I/O モジュールには、通常のファイル ランダム アクセス方法に類似したものが欠けていますか?
seek()
/fseek()
tell()
/ftell()
これらなしでノード内の大きなファイルからランダムな固定サイズのレコードを読み取るにはどうすればよいですか?
何か足りないのでしょうか、それとも node.js の標準ファイル I/O モジュールには、通常のファイル ランダム アクセス方法に類似したものが欠けていますか?
seek()
/fseek()
tell()
/ftell()
これらなしでノード内の大きなファイルからランダムな固定サイズのレコードを読み取るにはどうすればよいですか?
tell
そうではありませんが、ファイル内の現在の位置がわからないことや、自分自身を追跡する方法がないことはほとんどありません。
seek
とのposition
引数を介して間接的に公開されます。引数を指定すると、操作を実行する前にその場所をシークします。fs.read
fs.write
null
ノードにはこれらが組み込まれていません。取得できる最も近い方法は、パラメーターを使用fs.createReadStream
してオフセットから読み取りを開始することです (ファイルを再度開かないように既存のものを渡します)。start
fd
http://nodejs.org/api/fs.html#fs_fs_createreadstream_path_options
createReadStream は新しいファイル記述子を何度も作成すると思います。私は同期バージョンを好みます:
function FileBuffer(path) {
const fd = fs.openSync(path, 'r');
function slice(start, end) {
const chunkSize = end - start;
const buffer = new Buffer(chunkSize);
fs.readSync(fd, buffer, 0, chunkSize, start);
return buffer;
}
function close() {
fs.close(fd);
}
return {
slice,
close
}
}