Я пытаюсь прочитать большой файл по одной строке за раз. Я нашел вопрос о 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 github.com/nodejs/node/pull/4609
fs.readSync()
. Вы можете читать двоичные октеты в буфер, но нет простого способа справиться с частичными символами UTF-8 или UTF-16 без проверки буфера перед его преобразованием в строки JavaScript и сканированием на наличие EOL.Buffer()
Тип не имеет как богатый набор функций для работы на его экземплярах , как родные строки, но родные строки не могут содержать двоичные данные. Мне кажется, что отсутствие встроенного способа чтения текстовых строк из произвольных файловых дескрипторов является настоящим пробелом в node.js.