7
我試圖在Node.js中異步讀取文本文件並逐行讀取。我有以下的CoffeeScript代碼:Node.js readline缺少文件的最後一行?
readline = require 'readline'
fs = require 'fs'
#--------------------------------------------------------------------
lines_of = (route, handler) ->
#..................................................................
stream = readline.createInterface
input: fs.createReadStream route
output: process.stdout
terminal: false
#..................................................................
stream.on 'close', ->
handler null, null
#..................................................................
stream.on 'error', (error) ->
handler error
#..................................................................
stream.on 'line', (line) ->
handler null, line
它工作正常,除了文件的最後一行,除非它是由一個換行符終止時從未報告。有沒有什麼辦法可以解決這個問題(當然除了手動添加換行符)?
簡單的解決方案,如果文件不是太大:也許只是使用'readFile'並在'\ n'上分割? – WiredPrairie
是的,這絕對不是readline的目的。如果您正在創建shell或REPL,而不是讀取文件,則可以使用readline。你需要'fs'模塊:http://nodejs.org/api/fs.html –
你的評論讓我覺得既正確又技術上有爭議 - 畢竟,'黑客'就是在適當的情況下使用工具。更重要的是:流抽象告訴你不要查看那麼多的文件,http請求和標準鍵盤事件,而是'數據流'。這表示,如果readline沒有方法來溝通'懸空位'(在換行符之前,但在輸入流完成之後),那麼它就是它的* API *,而不是它的*預期目的*,使得這個庫很糟糕適合手頭的任務。 – flow