1
我需要定期使用大型未格式化的只讀文本文件,並檢查每個文件中是否存在特定內容/文字。該文件由所有字母數字字符組成。但是,我遇到問題,甚至讀到這些大型靜態文件之一的流的end
。使用NodeJS流式傳輸大型靜態文件
下面是我試圖運行後,最簡單的代碼的副本,它注意到它沒有達到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
。然而,這對於達到或不達到文件末尾應該沒有什麼差別,而是控制每個「塊」讀取的數據量。
出於好奇。你想逐行閱讀嗎? –
它不一定是這樣,但我想它可能是,今天由nodejs api支持。你認爲這能夠達到文件的「結尾」嗎? – user376327
我只是建議你改用'readline'(https://nodejs.org/dist/latest-v6.x/docs/api/readline.html)。我很好奇你的問題。我會發佈一個代碼供你測試,好嗎? –