web-dev-qa-db-fra.com

Créer un fichier vide dans Node.js?

Pour l'instant j'utilise

fs.openSync(filepath, 'a')

Mais c'est un peu délicat. Existe-t-il un moyen "standard" de créer un fichier vide dans Node.js?

65
Lai Yu-Hsuan

Si vous voulez forcer le fichier à être vide, vous voulez utiliser le 'w' flag à la place:

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

Cela tronquera le fichier s'il existe et le créera s'il ne le fait pas.

Enveloppez-le dans un fs.closeSync appelez si vous n'avez pas besoin du descripteur de fichier qu'il renvoie.

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

https://github.com/isaacs/node-touch fera le travail et, à l'instar de l'outil UNIX qu'il émule, ne remplacera pas un fichier existant.

8
Kyle Mathews

Si vous voulez que ce soit exactement comme sur UNIX, j'utiliserais ce que vous avez fs.openSync(filepath, 'a') sinon le "w" écrasera le fichier s'il existe déjà et "wx" échouera s'il existe déjà. Mais vous voulez mettre à jour le fichier mtime, utilisez donc 'a' sans rien ajouter.

6
Nick Sotiros

Voici la manière asynchrone, en utilisant "wx" donc il échoue sur les fichiers existants.

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