114 votes

Créer un fichier uniquement s'il n'existe pas dans Node.js

Nous avons un tampon que nous aimerions écrire dans un fichier. Si le fichier existe déjà, nous devons incrémenter un index sur celui-ci et réessayer. Existe-t-il un moyen de créer un fichier uniquement s'il n'existe pas, ou dois-je simplement statuer sur les fichiers jusqu'à ce que j'obtienne une erreur pour en trouver un qui n'existe pas déjà ?

Par exemple, j'ai des fichiers a_1.jpg y a_2.jpg . J'aimerais que ma méthode essaie de créer a_1.jpg y a_2.jpg et échouer, et enfin créer avec succès a_3.jpg .

La méthode idéale ressemblerait à ceci :

fs.writeFile(path, data, { overwrite: false }, function (err) {
  if (err) throw err;
  console.log('It\'s saved!');
});

ou comme ça :

fs.createWriteStream(path, { overwrite: false });

Est-ce que quelque chose de ce genre existe dans les fs bibliothèque ?

EDIT : Ma question n'est pas de savoir s'il existe une fonction distincte qui vérifie l'existence. C'est la suivante : existe-t-il un moyen de créer un fichier s'il n'existe pas, en un seul appel au système de fichiers ?

-1voto

Ivan Lazarevic Points 186

Vous pouvez faire quelque chose comme ça :

function writeFile(i){
    var i = i || 0;
    var fileName = 'a_' + i + '.jpg';
    fs.exists(fileName, function (exists) {
        if(exists){
            writeFile(++i);
        } else {
            fs.writeFile(fileName);
        }
    });
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X