Her seferinde bir satır büyük bir dosya okumaya çalışıyorum. Quora'da konuyla ilgilenen bir soru buldum , ancak her şeyi birbirine uydurmak için bazı bağlantıları kaçırıyorum.
var Lazy=require("lazy");
new Lazy(process.stdin)
.lines
.forEach(
function(line) {
console.log(line.toString());
}
);
process.stdin.resume();
Anlamak istediğim bit, bu örnekte olduğu gibi STDIN yerine bir dosyadan her seferinde bir satır nasıl okuyabileceğim.
Denedim:
fs.open('./VeryBigFile.csv', 'r', '0666', Process);
function Process(err, fd) {
if (err) throw err;
// DO lazy read
}
ama işe yaramıyor. Ben bir tutam PHP gibi bir şey kullanarak geri düşebilir biliyorum, ama ben bunu anlamak istiyorum.
Dosya üzerinde çalıştığım sunucudan daha büyük olduğu için diğer yanıtın çalışacağını sanmıyorum.
if (line.length==1 && line[0] == 48) special(line);
node
API dokümanlarında hafifçe değiştirilmiş olarak gönderildi github.com/nodejs/node/pull/4609
fs.readSync()
. İkili sekizlileri bir arabellekte okuyabilirsiniz, ancak JavaScript dizelerine çevirmeden ve EOL'leri taramadan önce arabelleği incelemeden kısmi UTF-8 veya UTF-16 karakterleriyle başa çıkmanın kolay bir yolu yoktur.Buffer()
Tip yerli dizileri olarak kendi örneklerinde çalışmasına fonksiyonların zengin set olarak sahip değil, ancak yerli dizeleri ikili veri içeremez. Bana öyle geliyor ki, keyfi dosya tanıtıcılarından metin satırlarını okumak için yerleşik bir yoldan yoksun, node.js'de gerçek bir boşluk.