Estou tentando ler um arquivo grande, uma linha por vez. Encontrei uma pergunta no Quora que tratava do assunto, mas estou perdendo algumas conexões para fazer a coisa toda se encaixar.
var Lazy=require("lazy");
new Lazy(process.stdin)
.lines
.forEach(
function(line) {
console.log(line.toString());
}
);
process.stdin.resume();
O pouco que eu gostaria de descobrir é como eu poderia ler uma linha de cada vez de um arquivo em vez de STDIN, como neste exemplo.
Eu tentei:
fs.open('./VeryBigFile.csv', 'r', '0666', Process);
function Process(err, fd) {
if (err) throw err;
// DO lazy read
}
mas não está funcionando. Eu sei que em uma pitada eu poderia voltar a usar algo como PHP, mas eu gostaria de descobrir isso.
Eu não acho que a outra resposta funcionaria, pois o arquivo é muito maior do que o servidor no qual estou executando ele tem memória.
if (line.length==1 && line[0] == 48) special(line);
node's docs API github.com/nodejs/node/pull/4609
fs.readSync(). Você pode ler octetos binários em um buffer, mas não há maneira fácil de lidar com caracteres UTF-8 ou UTF-16 parciais sem inspecionar o buffer antes de convertê-lo em strings JavaScript e procurar EOLs. OBuffer()tipo não possui um conjunto de funções tão rico para operar em suas instâncias quanto as cadeias nativas, mas as cadeias nativas não podem conter dados binários. Parece-me que a falta de uma maneira integrada de ler linhas de texto de manipuladores de arquivos arbitrários é uma lacuna real no node.js.