Node.js's native readline
module can
be applied in various situations for reading some sort of stream line-by-line,
e.g. with a TCP socket or with a file stream to quickly make a cat
command:
// cat.js
#!/usr/bin/env node
const { createInterface } = require('readline');
const { resolve } = require('path');
const { createReadStream } = require('fs');
const fileStream = createReadStream(resolve(process.argv[2]), 'utf8');
createInterface(fileStream, process.stdout);
A less trivial example for using the readline
interface with files would be
reading a large file line-by-line to do processing while buffering very little
of the file directly into memory:
const doSomethingLineByLine = async () => {
const rl = createInterface(createReadStream('path/to/file', 'utf8'));
for await (const line of rl) {
doSomething(line);
}
};