Eine leere Datei in Node.js erstellen?


75

Im Moment benutze ich

fs.openSync(filepath, 'a')

Aber es ist ein bisschen schwierig. Gibt es eine Standardmethode zum Erstellen einer leeren Datei in Node.js?

Antworten:


146

Wenn Sie erzwingen möchten, dass die Datei leer ist, möchten Sie 'w'stattdessen das Flag verwenden:

var fd = fs.openSync(filepath, 'w');

Dadurch wird die Datei abgeschnitten, falls vorhanden, und erstellt, wenn dies nicht der Fall ist.

Schließen Sie es in einen fs.closeSyncAufruf ein , wenn Sie den zurückgegebenen Dateideskriptor nicht benötigen.

fs.closeSync(fs.openSync(filepath, 'w'));

1
fs.writeFileSync ('empty.txt', '');
Ahuigo

fs.appendFileSync ('do_not_override.txt', '');
Ahuigo

2
Sie können hier nach mehr Optionen suchen als wFlag nodejs.org/api/fs.html#fs_file_system_flags
Aditya Kresna Permana

Gibt es eine Möglichkeit, mehrere Verzeichnisse gleichzeitig zu erstellen, außer Schleifen mkdir? danke
oldboy


8

Hier ist die asynchrone Methode, mit der "wx"vorhandene Dateien fehlschlagen.

var fs = require("fs");
fs.open(path, "wx", function (err, fd) {
    // handle error
    fs.close(fd, function (err) {
        // handle error
    });
});

warum soll es scheitern?
Nick Sotiros

11
@NickSotiros, damit die Datei nicht überschrieben wird. Einige Anwendungsfälle möchten dies möglicherweise.
Michael Ozeryansky

8

Wenn Sie möchten, dass es genau wie das UNIX-Touch ist, würde ich das verwenden, was Sie haben. fs.openSync(filepath, 'a')Andernfalls überschreibt das 'w' die Datei, wenn es bereits vorhanden ist, und 'wx' schlägt fehl, wenn es bereits vorhanden ist. Sie möchten jedoch die mtime der Datei aktualisieren. Verwenden Sie daher 'a' und hängen Sie nichts an.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.