我有一个非常简单的Node.js脚本,它监视一个名为'in'的目录,当一个文件被放入那里时,gzip将它变为'out',然后删除(取消链接)原始文件...但是在取消链接阶段我从原始输入流中发出错误。
var fs = require('fs');
var zlib = require('zlib');
fs.watch(__dirname + '/in', function (event, filename) {
var gzip = zlib.createGzip();
var inputPath = 'in/' + filename;
var outputPath = 'out/' + filename + '.gz';
var inputStream = fs.createReadStream(inputPath);
var outputStream = fs.createWriteStream(outputPath);
outputStream.on('finish', function () {
fs.unlink(inputPath);
});
inputStream.on('error', function (err) {
console.dir(err); // Error is thrown here
});
inputStream
.pipe(gzip)
.pipe(outputStream);
});
错误是这样的:
{ [Error: ENOENT, open 'in/test.gif'] errno: 34, code: 'ENOENT', path: 'in/test.gif' }
这表示该文件不再存在,但是我想当inputStream的finish
事件被触发时,inputStream将完成该文件...
这里有任何帮助以澄清我对溪流的理解,我们将不胜感激。