我想使用nodejs中的Writable Stream多次写入文件。 问题是我也想为这位作家指定位置。
这是一些背景 - 我想创建一个多线程下载器。作为响应的数据需要保存到磁盘。数据块的顺序可以是随机的,这就是我需要将position参数也传递给可写流的原因。
我使用可写流而不是fs.write,因为文档说的是 -
请注意,在同一文件上多次使用fs.write是不安全的 无需等待回调。对于这种情况, 强烈建议使用fs.createWriteStream。
谢谢!
答案 0 :(得分:1)
您可以使用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');
});