Home > Article > Backend Development > Reading a file one line at a time in node.js?
I am trying to read a large file one line at a time. I found a question on Quora covering this topic, but I'm missing some connections to make the whole thing come together.
var Lazy=require("lazy"); new Lazy(process.stdin) .lines .forEach( function(line) { console.log(line.toString()); } ); process.stdin.resume();
What I'm trying to figure out is how to read from a file one line at a time, rather than reading from STDIN like in this example.
I have tried before:
fs.open('./VeryBigFile.csv', 'r', '0666', Process); function Process(err, fd) { if (err) throw err; // DO lazy read }
But it doesn't work. I know in a pinch I could fall back to something like PHP, but I want to figure this out.
I think the other answer won't work because the file is much larger than the memory of the server I'm running it on.
Since Node.js v0.12 and Node.js v4.0.0, there is a stable readline core module. This is the simplest way to read lines from a file without any external modules:
<code>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(); </code>
or:
var lineReader = require('readline').createInterface({ input: require('fs').createReadStream('file.in') }); lineReader.on('line', function (line) { console.log('Line from file:', line); }); lineReader.on('close', function () { console.log('all done, son'); });
The last line is read correctly even without the final \n
(starting with Node v0.12 or later).
UPDATE: This example has been added to Node's official API documentation.
The above is the detailed content of Reading a file one line at a time in node.js?. For more information, please follow other related articles on the PHP Chinese website!