Node oferă diferite opțiuni pentru scrierea în fișiere din sistemul dvs. prin intermediul sistemului încorporat fs modul. Acestea includ writeFile(), appendFile(), și createWriteStream().
La fel ca multe limbi, Node.js vă permite să alegeți între a suprascrie un fișier existent sau a-l adăuga. De asemenea, ar trebui să aflați despre compromisurile dintre scrierea unui fișier dintr-o singură mișcare și transmiterea acestuia în flux.
Folosind writeFile()
writeFile() este poate cea mai ușoară metodă pe care o puteți folosi pentru a scrie un fișier în Node.
fs.writeFile (nume fișier, date, apel invers)
Iată un exemplu care arată cum să creați un fișier text simplu folosind writeFile(). Desigur, puteți crea alte tipuri de fișiere, cum ar fi CSV sau JSON.
const fs = cere("fs")
fs.writeFile("test.txt", "Conținut nou", err => {
dacă (eroare) {
consolă.log (eroare)
}
});
writeFile() acceptă async/wait do în loc să utilizeze apeluri inverse ca în exemplul de mai sus, puteți crea fișierul după cum urmează.
const fs = cere(„fs”).promite
asincronfuncţiescrie în fișier() {
încerca {
asteapta fs.writeFile(„test.txt”, „Cont nou”)
} captură (eroare) {
consolă.log (err);
}
}
scrie în fișier()
În mod implicit, writeFile() funcționează prin înlocuirea conținutului fișierului specificat cu conținut nou, dacă fișierul există. Există totuși semnalizatoare pe care le puteți folosi pentru a suprascrie această funcționalitate, cum ar fi:
- r+ - deschide fișierul pentru a citi și scrie.
- w+ - deschide fișierul pentru a citi și scrie la începutul fișierului
- A - deschide fișierul de scris la sfârșitul fișierului.
- a+ - deschide fișierul pentru a citi și scrie la sfârșitul fișierului.
De exemplu, puteți utiliza steag-ul a+ astfel:
const fs = cere("fs")
fs.writeFile(„test.txt”, „Conținut mai nou”, { steag: "a+" }, err => {
dacă (eroare) {
consolă.log (eroare)
}
});
Există multe alte steaguri ale sistemului de fișiere despre care puteți afla în fișierul Documentația nodului pentru modulul fs.
The fs modulul oferă, de asemenea scrieFileSync, cel versiunea sincronă de writeFile().
const fs = cere("fs")
fs.writeFileSync(„test.txt”, „Conținut mai nou”, { steag: "a+" }, err => {
dacă (eroare) {
consolă.log (eroare)
}
});
Folosind createWriteStream()
Dezavantajul utilizării writeFile() este că trebuie să stocați tot conținutul fișierului simultan, ceea ce nu este scalabil pentru fișiere mari. createWriteStream() totuși, acceptă scrierea secvențială. Aceasta înseamnă că puteți scrie o bucată de date într-un fișier odată. Iată sistemul general pentru crearea unui flux care poate fi scris.
fs.createWriteStream (cale, opțiuni)
Codul de mai jos scrie date într-un fișier text folosind fluxuri
const fs = cere("fs")
// creează un flux care poate fi scris
lăsa writeableStream = fs.createWriteStream ("test.txt")
// Scrieți în fișier folosind fluxul care poate fi scris
writeableStream.write(„Conținut nou”);
Iată un alt exemplu care arată cum puteți transmite date către fluxul care poate fi scris. Acest program scrie toate intrările de la terminal în fișierul test.txt atâta timp cât terminalul este deschis.
const fs = cere("fs")
lăsa writableStream = fs.createWriteStream("test.txt");
process.stdin.pipe (writableStream);
Dacă rulați acest program din linia de comandă, îl puteți închide cu Ctrl + d sau Ctrl + c.
De asemenea, puteți scrie dintr-un alt fișier în fluxul care poate fi scris. Luați în considerare următorul exemplu:
const fs = cere("fs")
lăsa readableStream = fs.createReadStream("test.txt");
lăsa writableStream = fs.createWriteStream("test2.txt");
readableStream.on(„date”, funcţie(bucată mare) {
writableStream.write (bucătură);
});
Crearea unui flux lizibil al fișierului pe care doriți să-l copiați vă permite să citiți conținutul acestuia în bucăți. Deci, pentru fiecare bucată primită, programul va scrie în fișierul destinație.
Folosind appendFile()
appendFile() este o metodă simplă de a adăuga conținut la sfârșitul fișierului. Iată un exemplu.
const fs = cere("fs")
fs.appendFile(„test.txt”, „conținut adăugat”, err => {
dacă (eroare) {
consolă.eroare (eroare);
}
});
De asemenea, puteți utiliza async/wait.
const fs = cere(„fs”).promite
asincronfuncţieappendToFile() {
încerca {
asteapta fs.appendFile(„test.txt”, „conținut adăugat”)
} captură (eroare) {
consolă.log (err);
}
}
appendToFile()
Ca writeFile(), appendFile are și o versiune sincronă:
fs.appendFileSync(„test.txt”, „conținut adăugat”);
Utilizați fluxuri pentru a scrie fișiere mari
Acest articol a discutat mai multe abordări pentru scrierea fișierelor în Node. Deși writeFile() este foarte simplu, este mai potrivit pentru fișiere de dimensiuni mici, deoarece nu permite scrieri secvențiale. Dacă aveți de-a face cu fișiere mari, este mai bine să utilizați fluxuri care pot fi scrise.