Я намагаюся прочитати великий файл один рядок. Я знайшов питання щодо Quora, яке стосувалося цієї теми, але мені не вистачає деяких зв’язків, щоб зробити цілу річ спільною.
var Lazy=require("lazy");
new Lazy(process.stdin)
.lines
.forEach(
function(line) {
console.log(line.toString());
}
);
process.stdin.resume();
Біт, який я хотів би розібратися, - це те, як я можу читати по одному рядку з файла замість STDIN, як у цьому зразку.
Я намагався:
fs.open('./VeryBigFile.csv', 'r', '0666', Process);
function Process(err, fd) {
if (err) throw err;
// DO lazy read
}
але це не працює. Я знаю, що я міг би повернутися до використання чогось типу PHP, але я хотів би це зрозуміти.
Я не думаю, що інша відповідь спрацює, оскільки файл набагато більший, ніж сервер, на якому я запускаю, має пам'ять.
if (line.length==1 && line[0] == 48) special(line);
node
API API docs github.com/nodejs/node/pull/4609
fs.readSync()
. Ви можете читати двійкові октети в буфер, але немає простого способу впоратися з частковими символами UTF-8 або UTF-16, не перевіряючи буфер, перш ніж переводити його в рядки JavaScript і сканувати на EOL.Buffer()
Тип не має як багатий набір функцій для роботи на його примірниках , як рідні рядки, але рідні рядки не можуть містити двійкові дані. Мені здається, що відсутність вбудованого способу зчитування текстових рядків з довільних файлових файлів - це справжній розрив у node.js.