Vorrei creare un file foobar
. Tuttavia, se l'utente ha già un file denominato foobar
, non desidero sovrascriverlo. Quindi voglio creare solo foobar
se non esiste già.Creare un file se non esiste già
In un primo momento, ho pensato che avrei dovuto fare questo:
fs.exists(filename, function(exists) {
if(exists) {
// Create file
}
else {
console.log("Refusing to overwrite existing", filename);
}
});
Tuttavia, guardando il official documentation per fs.exists
, si legge:
fs.exists() è un anacronismo ed esiste solo per ragioni storiche. Non ci dovrebbe quasi mai essere un motivo per usarlo nel proprio codice.
In particolare, verificare se esiste un file prima di aprirlo è un anti-modello che ti lascia vulnerabili a condizioni di gara: altro processo può rimuovere il file tra le chiamate a fs.exists() e fs.open(). Basta aprire il file e gestire l'errore quando non è lì.
fs.exists() sarà deprecato.
Chiaramente gli sviluppatori del nodo pensano che il mio metodo sia una cattiva idea. Inoltre, non voglio usare una funzione che sarà deprecata.
Come posso creare un file senza scrivere su uno esistente?
indica: apre il file e gestisce l'errore (o la sua mancanza) – dandavis