A Node különféle lehetőségeket biztosít a rendszerben lévő fájlok írására a beépítetten keresztül fs modult. Ezek tartalmazzák writeFile(), appendFile(), és createWriteStream().

Sok más nyelvhez hasonlóan a Node.js is lehetővé teszi a meglévő fájl felülírását vagy hozzáfűzését. Ezenkívül meg kell tanulnia a kompromisszumokat a fájl egy lépésben történő írása és a streamelés között.

A writeFile() használata

writeFile() talán a legegyszerűbb módszer, amellyel fájlt írhat a Node-ban.

fs.writeFile (fájlnév, adatok, visszahívás)

Íme egy példa, amely bemutatja, hogyan lehet egyszerű szöveges fájlt létrehozni a writeFile() segítségével. Természetesen létrehozhat más fájltípusok, például CSV vagy JSON.

const fs = igényelnek("fs")

fs.writeFile("teszt.txt", "Új tartalom", err => {
ha (hiba) {
konzol.log (hiba)
}
});

A writeFile() támogatja az async/await do funkciót a visszahívások használata helyett, mint a fenti példában, a fájlt az alábbiak szerint hozhatja létre.

const fs = igényelnek("fs").ígéri

asyncfunkciówriteToFile()

instagram viewer
{
próbálja meg {
várják fs.writeFile("teszt.txt", "Új folytatás")
} fogás (hiba) {
konzol.log (hiba);
}
}

writeToFile()

Alapértelmezés szerint a writeFile() úgy működik, hogy a megadott fájl tartalmát új tartalommal helyettesíti, ha a fájl létezik. Vannak azonban jelzők, amelyekkel felülbírálhatja ezt a funkciót, például:

  • r+ - megnyitja a fájlt olvasáshoz és íráshoz.
  • w+ - megnyitja a fájlt, hogy olvassa és írjon a fájl elejére
  • a - megnyitja a fájlt, hogy a fájl végére írjon.
  • a+ - megnyitja a fájlt, hogy olvassa és írjon a fájl végére.

Használhatja például az a+ jelzőt a következőképpen:

const fs = igényelnek("fs")

fs.writeFile("test.txt", "Újabb tartalom", { zászló: "a+" }, err => {
ha (hiba) {
konzol.log (hiba)
}
});

Számos más fájlrendszer-jelző található, amelyekről a következő helyen tájékozódhat Az fs modul csomóponti dokumentációja.

Az fs modul is biztosítja writeFileSync, az szinkron verzió of writeFile().

const fs = igényelnek("fs")

fs.writeFileSync("test.txt", "Újabb tartalom", { zászló: "a+" }, err => {
ha (hiba) {
konzol.log (hiba)
}
});

CreateWriteStream() használata

A használat hátránya writeFile() az, hogy a fájl teljes tartalmát egyszerre kell tárolnia, ami nagy fájlok esetén nem méretezhető. createWriteStream() azonban támogatja a szekvenciális írást. Ez azt jelenti, hogy egyszerre egy adatdarabot írhat egy fájlba. Itt van az írható adatfolyam létrehozásának általános rendszere.

fs.createWriteStream (elérési út, beállítások)

Az alábbi kód adatfolyamok segítségével szöveges fájlba ír adatokat

const fs = igényelnek("fs")

// írható adatfolyam létrehozása
hagyja writeableStream = fs.createWriteStream("teszt.txt")

// Írjon a fájlba az írható adatfolyam segítségével
writeableStream.write("Új tartalom");

Íme egy másik példa, amely bemutatja, hogyan viheti át az adatokat az írható adatfolyamba. Ez a program a terminál összes bemenetét a test.txt fájlba írja, amíg a terminál nyitva van.

const fs = igényelnek("fs")
hagyja writableStream = fs.createWriteStream("teszt.txt");
process.stdin.pipe (writableStream);

Ha ezt a programot a parancssorból futtatja, akkor ezzel kiléphet Ctrl + d vagy Ctrl + c.

Másik fájlból is írhat az írható adatfolyamba. Tekintsük a következő példát:

const fs = igényelnek("fs")
hagyja readableStream = fs.createReadStream("teszt.txt");
hagyja writableStream = fs.createWriteStream("teszt2.txt");

readableStream.on("data", funkció(darab) {
írhatóStream.write (darab);
});

A másolni kívánt fájl olvasható adatfolyamának létrehozása lehetővé teszi a tartalom darabokban történő olvasását. Tehát minden egyes fogadott darabnál a program a célfájlba ír.

Az appendFile() használata

appendFile() egy egyszerű módszer a tartalom hozzáadására a fájl végére. Íme egy példa.

const fs = igényelnek("fs")

fs.appendFile("test.txt", "added content", err => {
ha (hiba) {
konzol.error (err);
}
});

Használhatja az async/await parancsot is.

const fs = igényelnek("fs").ígéri

asyncfunkcióappendToFile() {
próbálja meg {
várják fs.appendFile("teszt.txt", "hozzáadott tartalom")
} fogás (hiba) {
konzol.log (hiba);
}
}

appendToFile()

Tetszik writeFile(), az appendFile-nek van szinkron verziója is:

fs.appendFileSync("teszt.txt", "hozzáadott tartalom");

Használja a Streameket nagy fájlok írásához

Ez a cikk a fájlok Node-ban történő írásának számos megközelítését tárgyalja. Míg a writeFile() nagyon egyszerű, jobban megfelel kis fájlméretekhez, mivel nem teszi lehetővé a szekvenciális írást. Ha nagy fájlokkal foglalkozik, jobb, ha írható adatfolyamokat használ.