代码之家  ›  专栏  ›  技术社区  ›  Gershom Maes

节点;如果可读流引发错误,则为默认值

  •  0
  • Gershom Maes  · 技术社区  · 7 年前

    我有以下情况,其中一个阅读流管道到一个写作流:

    let rs = fs.createReadStream(getSrcFileName());
    let ws = fs.createWriteStream(getTrgFileName());
    
    rs.pipe(ws);
    
    // ...
    

    这个很好用。现在,我想确保 总有一些东西被写入文件 getTrgFileName() ,甚至当 rs 遇到错误 . 如果发生错误,我希望输出文件中的内容 'error occurred' .

    例如,当前如果 getSrcFileName() 指的是一个不存在的文件,整个设置失败,没有任何内容写入输出文件。我可以应用什么流操作在出错时生成默认值?

    谢谢!

    1 回复  |  直到 7 年前
        1
  •  1
  •   dvsoukup    7 年前

    const fs = require('fs');
    
    rs.on('error', (error) => {
        fs.writeFile('YourFileName.txt', 'error occurred', (err) => { 
          if (err) throw err;
            console.log('File saved, but with errors!');
        });
    });
    

    const fs = require('fs');
    
    let rs = fs.createReadStream(getSrcFileName());
    let ws = fs.createWriteStream(getTrgFileName());
    
    rs.pipe(ws)
      .on('error', (error) => {
         fs.writeFile('YourFileName.txt', 'error occurred', (err) => { 
           if (err) throw err;
           console.log('File saved, but with errors!');
         });
       });
    

    rs.pipe(ws)
      .on('error', (error) => {
         ws.write('error occurred');
       });