【问题标题】:why does ending a write stream clears data that was previously written to that file in nodeJS为什么结束写入流会清除之前在 nodeJS 中写入该文件的数据
【发布时间】:2022-12-18 07:19:45
【问题描述】:

我试图读取一个文件的内容并使用 nodeJS 将其写入另一个文件。如果我不添加 fileStream.end(),一切正常。下面是我写的代码:

    const fs= require ('fs');
    const readLine = require('readline');

    //read file
    const myInterface = readLine.createInterface({input:fs.createReadStream('./input/file.txt'),output: fs.createWriteStream('output.txt')});

//print to output
const fileStream=fs.createWriteStream('output1.txt');

//function to copy 
let copyData=(line)=>{
    //console.log(line);
    fileStream.write(`copied: ${line}\n`);
}

//copy file
myInterface.on('line',copyData);
fileStream.end();

//print to console
fs.readFile('output1.txt','utf-8',(err,data)=>{
    if(err)
    console.log(`ERROR: ${err}`)
    else
    console.log(`readFile: ${data}`)
})

提前致谢!添加了终端输出的图片

【问题讨论】:

    标签: node.js createwritestream


    【解决方案1】:

    在任何读写完成之前,您正在同步调用filestream.end()

    当你这样做时:

    myInterface.on('line',copyData);
    

    您只是设置了一个事件处理程序,在未来的某个时候,函数 copyData 将被文件中的每一行调用。但是,在发生任何事情之前,您可以致电:

    filestream.end()
    

    在写入任何内容之前关闭写入流。

    【讨论】:

      猜你喜欢
      • 2013-04-05
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      相关资源
      最近更新 更多