节点;可读流抛出错误时的默认值

时间:2018-07-31 21:49:49

标签: node.js stream

在以下情况下,读取流通过管道传输到写入流:

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

rs.pipe(ws);

// ...

这很好用。现在,我要确保即使在getTrgFileName()遇到错误的情况下,总是将{strong>某些内容写入rs的文件中。如果发生错误,我希望输出文件中的内容为'error occurred'

例如,当前,如果getSrcFileName()引用了不存在的文件,则整个安装将失败,并且不会将任何内容写入输出文件。我可以应用哪些流操作来在发生错误时生成默认值?

谢谢!

1 个答案:

答案 0 :(得分:1)

您只需添加on错误处理程序,然后以这种方式写入文件...

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');
   });