Node.js修改文件数据流?



我需要将一个大型数据文件复制到另一个目标并进行一些修改。fs.readFilefs.writeFile非常慢。我需要逐行读取,修改并写入新文件。我发现了这样的东西:

fs.stat(sourceFile, function(err, stat){
var filesize = stat.size;
var readStream = fs.createReadStream(sourceFile);
// HERE I want do some modifications with bytes
readStream.pipe(fs.createWriteStream(destFile));
})

但是如何进行修改?我试图通过data事件获取数据

readStream.on('data', function(buffer){
var str = strToBytes(buffer);
str.replace('hello', '');
// How to write ???
});

但不明白如何将其写入文件:

您应该使用transform流并使用如下所示的管道:

fs.createReadStream('input/file.txt')
.pipe(new YourTransformStream())
.pipe(fs.createWriteStream('output/file.txt'))

然后,只需实现转换流,如本文档中所示

您还可以使用如下scramjet更轻松地执行此操作:

fs.createReadStream('input/file.txt')
.pipe(new StringStream('utf-8'))
.split('n')                                          // split every line
.map(async (line) => await makeYourChangesTo(line))   // update the lines
.join('n')                                           // join again
.pipe(fs.createWriteStream('output/file.txt'))

我想这比手动做更容易。

最新更新