Düğüm yerleşik aracılığıyla sisteminizdeki dosyalara yazmak için farklı seçenekler sunar fs modül. Bunlar şunları içerir: yazmaDosyası(), eklemeDosyası(), ve createWriteStream().

Birçok dilde olduğu gibi Node.js, mevcut bir dosyanın üzerine yazmak veya dosyaya eklemek arasında seçim yapmanızı sağlar. Ayrıca tek seferde dosya yazmak ve onu akışa almak arasındaki ödünleşimleri de öğrenmelisiniz.

writeFile()'ı kullanma

yazmaDosyası() Node.js'de dosya yazmak için kullanabileceğiniz belki de en kolay yöntemdir.

fs.writeFile (dosya adı, veri, geri arama)

İşte writeFile() kullanarak bir düz metin dosyasının nasıl oluşturulacağını gösteren bir örnek. elbette oluşturabilirsiniz CSV gibi diğer dosya türleri veya JSON.

const fs = gerekmek("fs")

fs.writeFile("test.txt", "Yeni içerik", hata => {
eğer (hata) {
konsol.log (hata)
}
});

writeFile() yukarıdaki örnekte olduğu gibi geri aramaları kullanmak yerine async/await do'yu destekler, dosyayı aşağıdaki gibi oluşturabilirsiniz.

const fs = gerekmek("fs"). söz

zaman uyumsuz

instagram viewer
işlevwriteToFile() {
denemek {
beklemek fs.writeFile("test.txt", "Yeni devam")
} tutmak (hata) {
konsol.log (hata);
}
}

writeToFile()

Varsayılan olarak, writeFile(), dosya varsa, belirtilen dosyanın içeriğini yeni içerikle değiştirerek çalışır. Ancak bu işlevi geçersiz kılmak için kullanabileceğiniz bayraklar vardır, örneğin:

  • r+ - okumak ve yazmak için dosyayı açar.
  • w+ - dosyanın başında okumak ve yazmak için dosyayı açar
  • a - dosyanın sonuna yazılacak dosyayı açar.
  • bir+ - dosyanın sonunda okunacak ve yazılacak dosyayı açar.

Örneğin, a+ bayrağını şu şekilde kullanabilirsiniz:

const fs = gerekmek("fs")

fs.writeFile("test.txt", "Daha yeni içerik", { bayrak: "a+" }, hata => {
eğer (hata) {
konsol.log (hata)
}
});

Hakkında bilgi edinebileceğiniz birçok başka dosya sistemi bayrağı vardır. fs modülü için düğüm belgeleri.

bu fs modül ayrıca sağlar writeFileSync, senkron versiyon writeFile() öğesinin.

const fs = gerekmek("fs")

fs.writeFileSync("test.txt", "Daha yeni içerik", { bayrak: "a+" }, hata => {
eğer (hata) {
konsol.log (hata)
}
});

createWriteStream()'i kullanma

kullanmanın dezavantajı yazmaDosyası() büyük dosyalar için ölçeklenemeyen dosyanın tüm içeriğini bir kerede depolamanız gerektiğidir. createWriteStream() ancak sıralı yazmayı destekler. Bu, bir seferde bir dosyaya bir veri yığını yazabileceğiniz anlamına gelir. İşte yazılabilir bir akış oluşturmak için genel sistem.

fs.createWriteStream (yol, seçenekler)

Aşağıdaki kod, akışları kullanarak verileri bir metin dosyasına yazar

const fs = gerekmek("fs")

// yazılabilir bir akış oluştur
İzin Vermek writeableStream = fs.createWriteStream("test.txt")

// Yazılabilir akışı kullanarak dosyaya yaz
writeableStream.write("Yeni içerik");

Verileri yazılabilir akışa nasıl aktarabileceğinizi gösteren başka bir örnek. Bu program, terminal açık olduğu sürece terminalden gelen tüm girdileri test.txt dosyasına yazar.

const fs = gerekmek("fs")
İzin Vermek yazılabilirStream = fs.createWriteStream("test.txt");
process.stdin.pipe (yazılabilirAkış);

Bu programı komut satırından çalıştırırsanız, ile çıkabilirsiniz. Ctrl + d veya Ctrl + c.

Ayrıca başka bir dosyadan yazılabilir akışa yazabilirsiniz. Aşağıdaki örneği göz önünde bulundurun:

const fs = gerekmek("fs")
İzin Vermek readableStream = fs.createReadStream("test.txt");
İzin Vermek yazılabilirStream = fs.createWriteStream("test2.txt");

readableStream.on("veri", işlev(yığın) {
yazılabilirStream.write (yığın);
});

Kopyalamak istediğiniz dosyanın okunabilir bir akışını oluşturmak, içeriğini parçalar halinde okumanıza olanak tanır. Böylece alınan her parça için program hedef dosyaya yazacaktır.

appendFile()'ı kullanma

eklemeDosyası() dosyanın sonuna içerik eklemenin basit bir yöntemidir. İşte bir örnek.

const fs = gerekmek("fs")

fs.appendFile("test.txt", "eklenen içerik", err => {
eğer (hata) {
konsol.hata (hata);
}
});

Ayrıca async/await'i de kullanabilirsiniz.

const fs = gerekmek("fs"). söz

zaman uyumsuzişlevDosyaya ekle() {
denemek {
beklemek fs.appendFile("test.txt", "içerik eklendi")
} tutmak (hata) {
konsol.log (hata);
}
}

eklemeDosyası()

Beğenmek yazmaDosyası(), appendFile ayrıca senkronize bir sürüme sahiptir:

fs.appendFileSync("test.txt", "içerik eklendi");

Büyük Dosyaları Yazmak için Akışları Kullanın

Bu makalede, Node.js'de dosya yazmaya yönelik çeşitli yaklaşımlar tartışılmıştır. writeFile() çok basit olsa da, sıralı yazmaya izin vermediğinden küçük dosya boyutları için daha uygundur. Büyük dosyalarla uğraşıyorsanız, yazılabilir akışları kullanmak daha iyidir.