„Node“ suteikia įvairias parinktis, kaip rašyti į jūsų sistemos failus per integruotą fs modulis. Jie apima writeFile(), appendFile(), ir CreateWriteStream().

Kaip ir daugelis kalbų, Node.js leidžia pasirinkti perrašyti esamą failą arba pridėti prie jo. Taip pat turėtumėte sužinoti apie kompromisus tarp failo rašymo vienu metu ir jo perdavimo srautu.

Naudojant writeFile()

writeFile() yra bene lengviausias būdas, kurį galite naudoti norėdami parašyti failą „Node“.

fs.writeFile (failo pavadinimas, duomenys, atgalinis skambutis)

Štai pavyzdys, rodantis, kaip sukurti paprasto teksto failą naudojant writeFile(). Žinoma, galite kurti kitų tipų failai, pvz., CSV arba JSON.

konst fs = reikalauti(„fs“)

fs.writeFile("test.txt", "Naujas turinys", err => {
jeigu (err) {
konsolė.log (err)
}
});

writeFile() palaiko async/await do užuot naudoję atgalinius skambučius, kaip nurodyta aukščiau pateiktame pavyzdyje, galite sukurti failą taip.

konst fs = reikalauti("fs").pažada

asyncfunkcijarašyti į failą() {
bandyti {
laukti fs.writeFile("testas.txt", "Naujas tęsinys")
} sugauti (err) {
konsolė.log (err);
}
}

instagram viewer

rašyti į failą ()

Pagal numatytuosius nustatymus writeFile() veikia pakeisdama nurodyto failo turinį nauju turiniu, jei failas yra. Tačiau yra vėliavėlių, kurias galite naudoti norėdami nepaisyti šios funkcijos, pavyzdžiui:

  • r+ - atidaro failą skaityti ir rašyti.
  • w+ - atidaro failą, kad galėtumėte skaityti ir rašyti failo pradžioje
  • a - atidaro failą, kad galėtumėte įrašyti failo pabaigoje.
  • a+ - atidaro failą, kad galėtumėte skaityti ir rašyti failo pabaigoje.

Pavyzdžiui, vėliavėlę a+ galite naudoti taip:

konst fs = reikalauti(„fs“)

fs.writeFile("test.txt", "Naujesnis turinys", { vėliava: "a+" }, err => {
jeigu (err) {
konsolė.log (err)
}
});

Yra daug kitų failų sistemos vėliavėlių, apie kurias galite sužinoti Fs modulio mazgo dokumentacija.

The fs modulis taip pat suteikia writeFileSync, sinchroninė versija iš writeFile().

konst fs = reikalauti(„fs“)

fs.writeFileSync("test.txt", "Naujesnis turinys", { vėliava: "a+" }, err => {
jeigu (err) {
konsolė.log (err)
}
});

Naudojant createWriteStream()

Naudojimo trūkumas writeFile() yra tai, kad jūs turite saugoti visą failo turinį vienu metu, o tai nėra keičiama dideliems failams. CreateWriteStream() tačiau palaiko nuoseklųjį rašymą. Tai reiškia, kad vienu metu į failą galite įrašyti vieną duomenų dalį. Čia yra bendra rašomo srauto kūrimo sistema.

fs.createWriteStream (kelias, parinktys)

Toliau pateiktas kodas įrašo duomenis į tekstinį failą naudodamas srautus

konst fs = reikalauti(„fs“)

// sukurti įrašomą srautą
leisti writeableStream = fs.createWriteStream("test.txt")

// Rašykite į failą naudodami rašomą srautą
writeableStream.write("Naujas turinys");

Štai dar vienas pavyzdys, rodantis, kaip galite perkelti duomenis į įrašomąjį srautą. Ši programa įrašo visą įvestį iš terminalo į test.txt failą tol, kol terminalas yra atidarytas.

konst fs = reikalauti(„fs“)
leisti writableStream = fs.createWriteStream("test.txt");
process.stdin.pipe (writableStream);

Jei paleisite šią programą iš komandinės eilutės, galite ją uždaryti naudodami Ctrl + d arba Ctrl + c.

Taip pat galite rašyti iš kito failo į įrašomą srautą. Apsvarstykite šį pavyzdį:

konst fs = reikalauti(„fs“)
leisti readableStream = fs.createReadStream("test.txt");
leisti writableStream = fs.createWriteStream("test2.txt");

readableStream.on("duomenys", funkcija(gabalas) {
writableStream.write (gabalas);
});

Sukūrę skaitomą failo, kurį norite kopijuoti, srautą, galite skaityti jo turinį dalimis. Taigi už kiekvieną gautą dalį programa įrašys į paskirties failą.

Naudojant appendFile()

appendFile() yra paprastas būdas įtraukti turinį į failo pabaigą. Štai pavyzdys.

konst fs = reikalauti(„fs“)

fs.appendFile("test.txt", "pridėtas turinys", err => {
jeigu (err) {
konsolė.error (err);
}
});

Taip pat galite naudoti async/wait.

konst fs = reikalauti("fs").pažada

asyncfunkcijapridėti prie failo() {
bandyti {
laukti fs.appendFile("test.txt", "pridėtas turinys")
} sugauti (err) {
konsolė.log (err);
}
}

appendToFile()

Kaip writeFile(), appendFile taip pat turi sinchroninę versiją:

fs.appendFileSync("test.txt", "pridėtas turinys");

Norėdami rašyti didelius failus, naudokite srautus

Šiame straipsnyje aptariami keli failų rašymo „Node“ būdai. Nors writeFile() yra labai paprasta, ji geriau tinka mažo dydžio failams, nes neleidžia nuosekliai rašyti. Jei dirbate su dideliais failais, geriau naudoti įrašomus srautus.