Node nodrošina dažādas iespējas rakstīšanai uz failiem jūsu sistēmā, izmantojot iebūvēto fs modulis. Tie ietver writeFile(), appendFile(), un izveidotWriteStream().

Tāpat kā daudzas valodas, Node.js ļauj izvēlēties pārrakstīt esošu failu vai pievienot tam. Jums vajadzētu arī uzzināt par kompromisiem starp faila rakstīšanu vienā reizē un tā straumēšanu.

Izmantojot writeFile()

writeFile() iespējams, ir vienkāršākā metode, ko varat izmantot faila rakstīšanai Node.

fs.writeFile (faila nosaukums, dati, atzvanīšana)

Šeit ir piemērs, kas parāda, kā izveidot vienkārša teksta failu, izmantojot writeFile(). Jūs, protams, varat izveidot citus failu tipus, piemēram, CSV vai JSON.

konst fs = pieprasīt("fs")

fs.writeFile("test.txt", "Jauns saturs", err => {
ja (kļūda) {
konsole.log (kļūda)
}
});

writeFile() atbalsta async/await do, tā vietā, lai izmantotu atzvanīšanu, kā parādīts iepriekš minētajā piemērā, failu var izveidot šādi.

konst fs = pieprasīt("fs").sola

asinhronsfunkcijawriteToFile() {
pamēģini {
gaidīt fs.writeFile("test.txt", "Jauns turpinājums")
} noķert (kļūda) {
konsole.log (err);
}
}

writeToFile()

Pēc noklusējuma writeFile() darbojas, aizstājot norādītā faila saturu ar jaunu saturu, ja fails pastāv. Tomēr ir karodziņi, kurus varat izmantot, lai ignorētu šo funkcionalitāti, piemēram:

  • r+ - atver failu lasīšanai un rakstīšanai.
  • w+ - atver failu, lai lasītu un rakstītu faila sākumā
  • a - atver failu, lai rakstītu faila beigās.
  • a+ - atver failu lasīšanai un rakstīšanai faila beigās.

Piemēram, varat izmantot karogu a+ šādi:

konst fs = pieprasīt("fs")

fs.writeFile("test.txt", "Jaunāks saturs", { karogs: "a+" }, err => {
ja (kļūda) {
konsole.log (kļūda)
}
});

Ir daudzi citi failu sistēmas karodziņi, par kuriem varat uzzināt šeit Mezgla dokumentācija fs modulim.

The fs modulis arī nodrošina writeFileSync, sinhronā versija no writeFile().

konst fs = pieprasīt("fs")

fs.writeFileSync("test.txt", "Jaunāks saturs", { karogs: "a+" }, err => {
ja (kļūda) {
konsole.log (kļūda)
}
});

CreateWriteStream() izmantošana

Lietošanas mīnuss writeFile() ir tas, ka jums ir jāsaglabā viss faila saturs vienlaikus, kas nav mērogojams lieliem failiem. izveidotWriteStream() tomēr atbalsta secīgu rakstīšanu. Tas nozīmē, ka vienā failā varat ierakstīt vienu datu daļu. Šeit ir vispārīga sistēma rakstāmas straumes izveidei.

fs.createWriteStream (ceļš, opcijas)

Tālāk norādītais kods ieraksta datus teksta failā, izmantojot straumes

konst fs = pieprasīt("fs")

// izveidojiet rakstāmu straumi
ļaut writeableStream = fs.createWriteStream("test.txt")

// Ierakstiet failā, izmantojot rakstāmo straumi
writeableStream.write("Jauns saturs");

Šeit ir vēl viens piemērs, kas parāda, kā varat pārsūtīt datus uz rakstāmo straumi. Šī programma ieraksta visu termināļa ievadi failā test.txt, kamēr terminālis ir atvērts.

konst fs = pieprasīt("fs")
ļaut writableStream = fs.createWriteStream("test.txt");
process.stdin.pipe (writableStream);

Ja palaižat šo programmu no komandrindas, varat to aizvērt, izmantojot Ctrl+d vai Ctrl+c.

Varat arī rakstīt no cita faila rakstāmajā straumē. Apsveriet šādu piemēru:

konst fs = pieprasīt("fs")
ļaut readableStream = fs.createReadStream("test.txt");
ļaut writableStream = fs.createWriteStream("test2.txt");

readableStream.on("dati", funkcija(gabals) {
writableStream.write (gabals);
});

Izveidojot lasāmu kopējamā faila straumi, varat lasīt tā saturu pa daļām. Tātad par katru saņemto gabalu programma ierakstīs mērķa failā.

Lietot appendFile()

appendFile() ir vienkārša metode satura pievienošanai faila beigām. Šeit ir piemērs.

konst fs = pieprasīt("fs")

fs.appendFile("test.txt", "pievienots saturs", err => {
ja (kļūda) {
konsole.error (err);
}
});

Varat arī izmantot async/await.

konst fs = pieprasīt("fs").sola

asinhronsfunkcijapievienot failam() {
pamēģini {
gaidīt fs.appendFile("test.txt", "pievienots saturs")
} noķert (kļūda) {
konsole.log (err);
}
}

appendToFile()

Patīk writeFile(), appendFile ir arī sinhronā versija:

fs.appendFileSync("test.txt", "pievienots saturs");

Izmantojiet straumes, lai rakstītu lielus failus

Šajā rakstā tika apspriestas vairākas pieejas failu rakstīšanai Node. Lai gan writeFile() ir ļoti vienkāršs, tas ir labāk piemērots maziem faila izmēriem, jo ​​tas nepieļauj secīgu rakstīšanu. Ja jums ir darīšana ar lieliem failiem, labāk ir izmantot rakstāmās straumes.