Node bietet verschiedene Optionen zum Schreiben in Dateien in Ihrem System über die integrierte fs Modul. Diese beinhalten writeFile(), appendFile(), und createWriteStream().

Wie bei vielen Sprachen können Sie bei Node.js wählen, ob Sie eine vorhandene Datei überschreiben oder daran anhängen möchten. Sie sollten sich auch mit den Kompromissen zwischen dem Schreiben einer Datei in einem Durchgang und dem Streamen vertraut machen.

Verwenden von writeFile()

writeFile() ist vielleicht die einfachste Methode, mit der Sie eine Datei in Node schreiben können.

fs.writeFile (Dateiname, Daten, Callback)

Hier ist ein Beispiel, das zeigt, wie man mit writeFile() eine einfache Textdatei erstellt. Sie können natürlich erstellen andere Dateitypen wie CSV oder JSON.

konst fs = benötigen("fs")

fs.writeFile("test.txt", "Neuer Inhalt", err => {
wenn (irren) {
Konsole.log (fehler)
}
});

writeFile() unterstützt async/await do Anstatt Callbacks wie im obigen Beispiel zu verwenden, können Sie die Datei wie folgt erstellen.

instagram viewer
konst fs = benötigen("fs"). verspricht

asynchronFunktionwriteToFile() {
Versuchen {
erwarten fs.writeFile("test.txt", "Neue Fortsetzung")
} Fang (irren) {
Konsole.log (fehler);
}
}

writeToFile()

Standardmäßig ersetzt writeFile() den Inhalt der angegebenen Datei durch neuen Inhalt, falls die Datei existiert. Es gibt jedoch Flags, die Sie verwenden können, um diese Funktionalität zu überschreiben, wie zum Beispiel:

  • r+ - öffnet die Datei zum Lesen und Schreiben.
  • w+ - öffnet die Datei zum Lesen und Schreiben am Anfang der Datei
  • a - öffnet die Datei, um am Ende der Datei zu schreiben.
  • ein+ - öffnet die Datei zum Lesen und Schreiben am Ende der Datei.

Sie können das a+-Flag beispielsweise wie folgt verwenden:

konst fs = benötigen("fs")

fs.writeFile("test.txt", "Neuerer Inhalt", { Flagge: "a+" }, err => {
wenn (irren) {
Konsole.log (fehler)
}
});

Es gibt viele andere Dateisystem-Flags, die Sie in der Knotendokumentation für das fs-Modul.

Das fs Modul bietet auch writeFileSync, das synchrone Version von writeFile().

konst fs = benötigen("fs")

fs.writeFileSync("test.txt", "Neuere Inhalte", { Flagge: "a+" }, err => {
wenn (irren) {
Konsole.log (fehler)
}
});

Verwenden von createWriteStream()

Der Nachteil der Verwendung writeFile() ist, dass Sie den gesamten Inhalt der Datei auf einmal speichern müssen, was für große Dateien nicht skalierbar ist. createWriteStream() unterstützt jedoch sequentielles Schreiben. Das bedeutet, dass Sie jeweils einen Datenblock in eine Datei schreiben können. Hier ist das allgemeine System zum Erstellen eines beschreibbaren Streams.

fs.createWriteStream (Pfad, Optionen)

Der folgende Code schreibt Daten mithilfe von Streams in eine Textdatei

konst fs = benötigen("fs")

// Einen beschreibbaren Stream erstellen
Lassen writeableStream = fs.createWriteStream("test.txt")

// Mit dem beschreibbaren Stream in die Datei schreiben
writeableStream.write("Neuer Inhalt");

Hier ist ein weiteres Beispiel, das zeigt, wie Sie Daten an den beschreibbaren Stream weiterleiten können. Dieses Programm schreibt alle Eingaben vom Terminal in die Datei test.txt, solange das Terminal geöffnet ist.

konst fs = benötigen("fs")
Lassen writableStream = fs.createWriteStream("test.txt");
process.stdin.pipe (writableStream);

Wenn Sie dieses Programm über die Befehlszeile ausführen, können Sie es mit beenden Strg + d oder Strg + c.

Sie können auch aus einer anderen Datei in den beschreibbaren Stream schreiben. Betrachten Sie das folgende Beispiel:

konst fs = benötigen("fs")
Lassen readableStream = fs.createReadStream("test.txt");
Lassen writableStream = fs.createWriteStream("test2.txt");

readableStream.on("Daten", Funktion(Stück) {
beschreibbarerStream.write (Stück);
});

Wenn Sie einen lesbaren Stream der Datei erstellen, die Sie kopieren möchten, können Sie deren Inhalt in Blöcken lesen. Das Programm schreibt also für jeden empfangenen Chunk in die Zieldatei.

appendFile() verwenden

appendFile() ist eine einfache Methode, um Inhalte am Ende der Datei hinzuzufügen. Hier ist ein Beispiel.

konst fs = benötigen("fs")

fs.appendFile("test.txt", "added content", err => {
wenn (irren) {
Konsole.error (irr);
}
});

Sie können auch async/await verwenden.

konst fs = benötigen("fs"). verspricht

asynchronFunktionappendToFile() {
Versuchen {
erwarten fs.appendFile("test.txt", "hinzugefügter Inhalt")
} Fang (irren) {
Konsole.log (fehler);
}
}

appendToFile()

Wie writeFile(), appendFile hat auch eine synchrone Version:

fs.appendFileSync("test.txt", "added content");

Verwenden Sie Streams, um große Dateien zu schreiben

In diesem Artikel wurden verschiedene Ansätze zum Schreiben von Dateien in Node. Während writeFile() sehr unkompliziert ist, eignet es sich besser für kleine Dateigrößen, da es keine sequentiellen Schreibvorgänge zulässt. Wenn Sie es mit großen Dateien zu tun haben, ist es besser, beschreibbare Streams zu verwenden.