Sto provando a leggere un file di testo in modo asincrono e riga per riga in Node.js. Ho il seguente codice CoffeeScript:Node.js readline mancante dell'ultima riga di file?
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
Funziona bene, tranne l'ultima riga del file non è mai riferito a meno che non termina con un ritorno a capo. c'è un modo per rimediare a questo (tranne, naturalmente, aggiungendo la nuova linea manualmente)?
soluzione semplice, se i file non sono troppo grandi: forse basta usare 'readFile' e dividere in' \ n'? – WiredPrairie
Sì, questo non è sicuramente quello che è il readline. Dovresti usare readline se stavi creando una shell o un REPL, non per leggere un file. Volete il modulo 'fs': http://nodejs.org/api/fs.html –
il vostro commento mi sembra corretto e tecnicamente discutibile, dopotutto," hacking "significa appropriarsi degli strumenti laddove appropriato. più al punto: l'astrazione dei flussi ti dice di visualizzare non tanto i file, le richieste http e gli eventi di tastiera stdin, ma "flussi di dati". Detto questo, se readline non ha un modo per comunicare i "bit penzolanti" (prima di una nuova riga, ma dopo che il flusso di input è terminato), allora è la sua * API *, non il suo * scopo * che rende questa libreria un brutto adatto per il compito a portata di mano. – flow