Read a file one line at a time in node.js?
Since Node.js v0.12 and as of Node.js v4.0.0, there is a stable readline core module. Here's the easiest way to read lines from a file, without any external modules:
const fs = require('fs');const readline = require('readline');async function processLineByLine() { const fileStream = fs.createReadStream('input.txt'); const rl = readline.createInterface({ input: fileStream, crlfDelay: Infinity }); // Note: we use the crlfDelay option to recognize all instances of CR LF // ('\r\n') in input.txt as a single line break. for await (const line of rl) { // Each line in input.txt will be successively available here as `line`. console.log(`Line from file: ${line}`); }}processLineByLine();
Or alternatively:
var lineReader = require('readline').createInterface({ input: require('fs').createReadStream('file.in')});lineReader.on('line', function (line) { console.log('Line from file:', line);});
The last line is read correctly (as of Node v0.12 or later), even if there is no final \n
.
UPDATE: this example has been added to Node's API official documentation.
For such a simple operation there shouldn't be any dependency on third-party modules. Go easy.
var fs = require('fs'), readline = require('readline');var rd = readline.createInterface({ input: fs.createReadStream('/path/to/file'), output: process.stdout, console: false});rd.on('line', function(line) { console.log(line);});
You don't have to open
the file, but instead, you have to create a ReadStream
.
Then pass that stream to Lazy