Node menyediakan opsi berbeda untuk menulis ke file di sistem Anda melalui built-in fs modul. Ini termasuk menulisFile(), tambahkanFile(), dan buatTulisStream().
Seperti banyak bahasa, Node.js memungkinkan Anda memilih antara menimpa file yang ada atau menambahkannya. Anda juga harus belajar tentang pengorbanan antara menulis file sekaligus dan streaming.
Menggunakan writeFile()
menulisFile() mungkin merupakan metode termudah yang dapat Anda gunakan untuk menulis file di Node.js.
fs.writeFile (nama file, data, panggilan balik)
Berikut adalah contoh yang menunjukkan cara membuat file teks biasa menggunakan writeFile(). Anda tentu saja dapat membuat jenis file lain seperti CSV atau JSON.
konstan fs = memerlukan("f")
fs.writeFile("test.txt", "Konten baru", err => {
jika (salah) {
menghibur.log (err)
}
});
writeFile() mendukung async/await do alih-alih menggunakan callback seperti pada contoh di atas, Anda dapat membuat file sebagai berikut.
konstan fs = memerlukan("fs"). berjanji
tidak sinkronfungsitulisToFile()
{
mencoba {
menunggu fs.writeFile("test.txt", "Lanjutan baru")
} menangkap (salah) {
menghibur.log (err);
}
}
menulisToFile()
Secara default, writeFile() bekerja dengan mengganti konten file yang ditentukan dengan konten baru jika file tersebut ada. Namun ada flag yang dapat Anda gunakan untuk mengganti fungsi ini seperti:
- r+ - membuka file untuk membaca dan menulis.
- w+ - membuka file untuk membaca dan menulis di awal file
- sebuah - membuka file untuk menulis di akhir file.
- a+ - membuka file untuk membaca dan menulis di akhir file.
Misalnya, Anda dapat menggunakan tanda a+ seperti ini:
konstan fs = memerlukan("f")
fs.writeFile("test.txt", "Konten lebih baru", { bendera: "a+" }, err => {
jika (salah) {
menghibur.log (err)
}
});
Ada banyak flag sistem file lain yang dapat Anda pelajari di Dokumentasi simpul untuk modul fs.
Itu fs modul juga menyediakan tulisSinkronisasi File, itu versi sinkron dari writeFile().
konstan fs = memerlukan("f")
fs.writeFileSync("test.txt", "Konten lebih baru", { bendera: "a+" }, err => {
jika (salah) {
menghibur.log (err)
}
});
Menggunakan createWriteStream()
Kelemahan dari menggunakan menulisFile() adalah Anda harus menyimpan semua konten file sekaligus yang tidak dapat diskalakan untuk file besar. buatTulisStream() namun, mendukung penulisan berurutan. Ini berarti Anda dapat menulis satu potongan data ke file dalam satu waktu. Berikut adalah sistem umum untuk membuat aliran yang dapat ditulis.
fs.createWriteStream (jalur, opsi)
Kode di bawah ini menulis data ke file teks menggunakan stream
konstan fs = memerlukan("f")
// buat aliran yang dapat ditulis
membiarkan writeableStream = fs.createWriteStream("test.txt")
// Tulis ke file menggunakan aliran yang dapat ditulis
writeableStream.write("Konten baru");
Berikut adalah contoh lain yang menunjukkan bagaimana Anda dapat menyalurkan data ke aliran yang dapat ditulis. Program ini menulis semua input dari terminal ke file test.txt selama terminal terbuka.
konstan fs = memerlukan("f")
membiarkan writableStream = fs.createWriteStream("test.txt");
process.stdin.pipe (writableStream);
Jika Anda menjalankan program ini dari baris perintah, Anda dapat menghentikannya dengan Ctrl + d atau Ctrl + c.
Anda juga dapat menulis dari file lain ke aliran yang dapat ditulis. Perhatikan contoh berikut:
konstan fs = memerlukan("f")
membiarkan readableStream = fs.createReadStream("test.txt");
membiarkan writableStream = fs.createWriteStream("test2.txt");
readableStream.on("data", fungsi(bingkah) {
writableStream.write (potongan);
});
Membuat aliran file yang dapat dibaca yang ingin Anda salin memungkinkan Anda membaca isinya dalam potongan. Jadi untuk setiap chunk yang diterima, program akan menulis ke file tujuan.
Menggunakan appendFile()
tambahkanFile() adalah metode langsung untuk menambahkan konten ke akhir file. Berikut adalah contoh.
konstan fs = memerlukan("f")
fs.appendFile("test.txt", "konten yang ditambahkan", err => {
jika (salah) {
menghibur.kesalahan (err);
}
});
Anda juga dapat menggunakan async/menunggu.
konstan fs = memerlukan("fs"). berjanji
tidak sinkronfungsitambahkanToFile() {
mencoba {
menunggu fs.appendFile("test.txt", "konten yang ditambahkan")
} menangkap (salah) {
menghibur.log (err);
}
}
tambahkanToFile()
Suka menulisFile(), appendFile juga memiliki versi sinkron:
fs.appendFileSync("test.txt", "konten yang ditambahkan");
Gunakan Aliran untuk Menulis File Besar
Artikel ini membahas beberapa pendekatan untuk menulis file di Node.js. Meskipun writeFile() sangat mudah, ini lebih cocok untuk ukuran file kecil karena tidak memungkinkan penulisan berurutan. Jika Anda berurusan dengan file besar, lebih baik menggunakan aliran yang dapat ditulis.