我需要定期使用大型未格式化的只读文本文件,并检查每个文件中是否存在某些内容/单词。该文件由所有字母数字字符组成。end
但是,即使读取这些大型静态文件之一的流,我也遇到了问题。
下面是我在注意到它没有到达之后尝试运行的最简单代码的副本,end
这仍然不会触发end
事件。我可以看到许多data
被读取的迭代/块,但绝不是文件的所有数据,end
也从未被触发。
function readFile(file) {
const readStream = fs.createReadStream(file, {
fd: null,
flags: 'r',
encoding: 'utf-8',
allowVolatile: true,
highWaterMark: staticHighWaterMark,
});
readStream.on('data', (chunk) => {
console.log('DATA chunk', chunk.length);
});
readStream.on('end', () => {
console.log('END file');
});
}
这太简单了,我开始怀疑这是否与我的环境有关,但是如果在上面的简单逻辑中识别为问题以读取流,请告诉我。
注意:如果我继续增加highWaterMark
选项,它会进一步通过文件,但仍然没有到达end
文件的。但是,这对到达或未到达文件末尾没有影响,而是控制每个“块”读取的数据量。