Node pakub sisseehitatud süsteemi kaudu erinevaid võimalusi teie süsteemi failidele kirjutamiseks fs moodul. Need sisaldavad writeFile(), appendFile(), ja createWriteStream().

Nagu paljud keeled, võimaldab ka Node.js valida olemasoleva faili ülekirjutamise või sellele lisamise vahel. Samuti peaksite õppima kompromisside kohta faili ühe korraga kirjutamise ja selle voogesituse vahel.

writeFile() kasutamine

writeFile() on ehk lihtsaim meetod, mida saate sõlmes faili kirjutamiseks kasutada.

fs.writeFile (failinimi, andmed, tagasihelistamine)

Siin on näide, mis näitab, kuidas luua lihttekstifaili writeFile() abil. Muidugi saate luua muud failitüübid, näiteks CSV või JSON.

konst fs = nõuda("fs")

fs.writeFile("test.txt", "Uus sisu", err => {
kui (err) {
konsool.log (viga)
}
});

writeFile() toetab async/await do funktsiooni, selle asemel, et kasutada tagasihelistusi, nagu ülaltoodud näites, saate faili luua järgmiselt.

konst fs = nõuda("fs").lubadused

asünkrfunktsiooniwriteToFile() {
proovige {
ootama fs.writeFile("test.txt", "Uus jätk")
} püüda (err) {
konsool.log (err);
}
}

writeToFile()

instagram viewer

Vaikimisi töötab writeFile() asendades määratud faili sisu uue sisuga, kui fail on olemas. Siiski on lippe, mida saate selle funktsiooni tühistamiseks kasutada, näiteks:

  • r+ - avab faili lugemiseks ja kirjutamiseks.
  • w+ - avab faili lugemiseks ja faili algusesse kirjutamiseks
  • a - avab faili, et kirjutada faili lõppu.
  • a+ - avab faili lugemiseks ja faili lõpus kirjutamiseks.

Näiteks võite kasutada lippu a+ järgmiselt:

konst fs = nõuda("fs")

fs.writeFile("test.txt", "Uuem sisu", { lipp: "a+" }, err => {
kui (err) {
konsool.log (viga)
}
});

Seal on palju muid failisüsteemi lippe, mille kohta saate teavet jaotisest Fs-mooduli sõlme dokumentatsioon.

The fs moodul pakub ka writeFileSync, sünkroonne versioon of writeFile().

konst fs = nõuda("fs")

fs.writeFileSync("test.txt", "Uuem sisu", { lipp: "a+" }, err => {
kui (err) {
konsool.log (viga)
}
});

CreateWriteStream() kasutamine

Kasutamise negatiivne külg writeFile() on see, et peate salvestama kogu faili sisu korraga, mis pole suurte failide jaoks skaleeritav. createWriteStream() toetab aga järjestikust kirjutamist. See tähendab, et saate faili korraga kirjutada ühe andmepaki. Siin on üldine süsteem kirjutatava voo loomiseks.

fs.createWriteStream (tee, valikud)

Allolev kood kirjutab andmed tekstifaili kasutades vooge

konst fs = nõuda("fs")

// kirjutatava voo loomine
lase writeableStream = fs.createWriteStream("test.txt")

// Kirjutage faili kasutades kirjutatavat voogu
writeableStream.write("Uus sisu");

Siin on veel üks näide, mis näitab, kuidas saate kirjutada andmeid kirjutatavasse voogu. See programm kirjutab kogu terminali sisendi faili test.txt seni, kuni terminal on avatud.

konst fs = nõuda("fs")
lase writableStream = fs.createWriteStream("test.txt");
process.stdin.pipe (writableStream);

Kui käivitate selle programmi käsurealt, saate sellest väljuda Ctrl + d või Ctrl + c.

Kirjutatavasse voogu saab kirjutada ka teisest failist. Kaaluge järgmist näidet:

konst fs = nõuda("fs")
lase readableStream = fs.createReadStream("test.txt");
lase writableStream = fs.createWriteStream("test2.txt");

readableStream.on("data", funktsiooni(tükk) {
writableStream.write (tükk);
});

Kopeeritavast failist loetava voo loomine võimaldab lugeda selle sisu tükkidena. Seega kirjutab programm iga vastuvõetud tüki kohta sihtfaili.

appendFile() kasutamine

appendFile() on lihtne meetod faili lõppu sisu lisamiseks. Siin on näide.

konst fs = nõuda("fs")

fs.appendFile("test.txt", "lisatud sisu", err => {
kui (err) {
konsool.error (err);
}
});

Võite kasutada ka async/await.

konst fs = nõuda("fs").lubadused

asünkrfunktsioonilisa failile() {
proovige {
ootama fs.appendFile("test.txt", "lisatud sisu")
} püüda (err) {
konsool.log (err);
}
}

appendToFile()

meeldib writeFile(), appendFile'il on ka sünkroonne versioon:

fs.appendFileSync("test.txt", "lisatud sisu");

Kasutage suurte failide kirjutamiseks vooge

Selles artiklis käsitleti mitmeid lähenemisviise failide kirjutamiseks Node'is. Kuigi writeFile() on väga lihtne, sobib see paremini väikeste failisuuruste jaoks, kuna see ei võimalda järjestikust kirjutamist. Kui tegelete suurte failidega, on parem kasutada kirjutatavaid vooge.