Dos formas de leer archivos línea por línea en nodejs
-
A modo de línea de lectura
const fs = require('fs'); const readline = require('readline'); let rl = readline.createInterface({ input: fs.createReadStream("./11.txt") }) rl.on('line', line => { console.log(line); })
-
A modo de corriente
Idea: en forma de transmisión, lea un byte a la vez y luego juzgue si esta subsección es un carácter de nueva línea (el carácter de nueva línea en mac es 0xa0)
Si no, guarde el byte en una matriz temporal, si es así, transcodifique estas matrices en utf8 en forma de Buffer
El siguiente caso es: lea un archivo, luego agregue "" a cada línea, colóquelo en una matriz y luego escríbalo en un nuevo archivo.
const fs = require("fs"); let readStream = fs.createReadStream("./11.txt"); let writeStream = fs.createWriteStream("./11_11.txt"); let buffer = []; function writeFileWithLine(line, isLastLine) { writeStream.write('\t"'); writeStream.write(line); if (isLastLine) { writeStream.write('"\n') } else { writeStream.write('",\n'); } } writeStream.write("[\n"); readStream.on("readable", () => { while ((char = readStream.read(1)) !== null) { if (char[0] === 0x0a) { writeFileWithLine(Buffer.from(buffer).toString(), false); buffer.length = 0; } else { buffer.push(char[0]); } } }); readStream.on("end", () => { writeFileWithLine(Buffer.from(buffer).toString(), true); writeStream.write("]"); });