Skip to content

Instantly share code, notes, and snippets.

@jnrbsn
Created October 27, 2012 23:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jnrbsn/3966886 to your computer and use it in GitHub Desktop.
Save jnrbsn/3966886 to your computer and use it in GitHub Desktop.
Read a file line by line in Node.js
var fs = require('fs'),
EventEmitter = require('events').EventEmitter;
var createLineReader = function (filename) {
var stream = fs.createReadStream(filename),
em = new EventEmitter(),
buffer = '';
stream.on('error', function (error) {
throw error;
});
stream.on('data', function (data) {
var lines, lineCount, i;
buffer += data.toString();
lines = buffer.split("\n");
buffer = lines.pop();
lineCount = lines.length;
for (i = 0; i < lineCount; i++) {
em.emit('line', lines[i]);
}
});
stream.on('end', function () {
em.emit('line', buffer);
em.emit('end');
});
return em;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment