在我的节点应用程序中,我使用createWriteStream方法中的write方法将数据写入文件.现在我需要查找特定流的写入是否完整.我怎样才能找到它.
var stream = fs.createWriteStream('myFile.txt', {flags: 'a'});
var result = stream.write(data);
writeToStream();
function writeToStream() {
var result = stream.write(data + '\n');
if (!result) {
stream.once('drain',writeToStream());
}
}
Run Code Online (Sandbox Code Playgroud)
每次写完成时我都需要调用其他方法.我怎么能这样做.
mae*_*ics 11
从node.js WritableStream.write(...)文档中,您可以为"write"方法提供在刷写写入数据时调用的回调:
var stream = fs.createWriteStream('myFile.txt', {flags: 'a'});
var data = "Hello, World!\n";
stream.write(data, function() {
// Now the data has been written.
});
Run Code Online (Sandbox Code Playgroud)
请注意,在排队下一次调用之前,您可能不需要实际等待每次调用"写入"完成.即使"write"方法返回false,您仍然可以调用后续写入,并且节点会将挂起的写入请求缓冲到内存中.
我正在使用maerics的答案以及错误处理。该标志'a'用于打开要附加的文件。如果文件不存在,则创建该文件。您可以使用其他标志。
// Create a writable stream & Write the data to stream with encoding to be utf8
var writerStream = fs.createWriteStream('MockData/output.txt',{flags: 'a'})
.on('finish', function() {
console.log("Write Finish.");
})
.on('error', function(err){
console.log(err.stack);
});
writerStream.write(outPutData,function() {
// Now the data has been written.
console.log("Write completed.");
});
// Mark the end of file
writerStream.end();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22941 次 |
| 最近记录: |