node.js修改文件数据流?

Art*_*rti 5 javascript filestream fs node.js

我需要进行一些修改将一个大数据文件复制到另一个目标。fs.readFile而且fs.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));
})
Run Code Online (Sandbox Code Playgroud)

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

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

但不了解如何将其写入文件:

Mic*_*cki 8

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

fs.createReadStream('input/file.txt')
     .pipe(new YourTransformStream())
     .pipe(fs.createWriteStream('output/file.txt'))
Run Code Online (Sandbox Code Playgroud)

那么这只是实现转换流的问题,就像在这个文档中一样

您还可以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'))
Run Code Online (Sandbox Code Playgroud)

我想这比手动执行要容易。