4

我想使用 nodejs 中的 Writable Stream 多次写入文件。问题是我也想指定这个作者的位置。

这是一些背景 - 我想创建一个多线程下载器。作为响应的数据需要保存到磁盘。数据块的顺序可以是随机的,这就是为什么我需要将位置参数也传递给可写流。

我使用可写流而不是 fs.write 因为文档是这样说的-

请注意,在同一个文件上多次使用 fs.write 而不等待回调是不安全的。对于这种情况,强烈建议使用 fs.createWriteStream。

谢谢!

4

1 回答 1

3

您可以使用 start 选项执行此操作,但是,它要求文件存在并且大小 >= offset + chunkToWrite.length。这将使您重新使用 fs.writeFile 和一些虚拟内容,其大小 >= 要下载的文件的大小,并且需要等待初始写入的回调。例如:

var buffer = new Buffer (fileSize);
buffer.fill('0');

fs.writeFile('./file', buffer, function() {
  var writeStream = fs.createWriteStream('./file',{flags: 'r+', mode: 0777, start: 10});
  writeStream.write('HELLO AFTER 10');
});
于 2013-04-19T14:07:53.987 回答