2015-05-20 20 views
25

ho bisogno di controllare se un file esiste in un compito sorso, so di poter utilizzare alcune funzioni di nodo dal nodo, ci sono due:Controllare se il file esistono in Gulp

fs.exists() e fs.existsSync()

Il problema è che nella documentazione del nodo, sta dicendo che queste funzioni saranno deprecati

+0

Eventuali duplicati di [Verificare se in modo sincrono file/directory esiste in Node.js] (https://stackoverflow.com/questions/4482686/check-synchronously-if-file-directory-exists-in-node-js) – Leland

risposta

38

È possibile utilizzare fs.access

fs.access('/etc/passwd', (err) => { 
    if (err) { 
     // file/path is not visible to the calling process 
     console.log(err.message); 
     console.log(err.code); 
    } 
}); 

Lista dei codici di errore disponibili here


Utilizzando fs.access() per verificare l'accessibilità di un file prima di chiamare fs.open(), fs.readFile() o fs.writeFile() non è raccomandato. In questo modo si introduce una condizione di competizione, poiché altri processi potrebbero modificare lo stato del file tra le due chiamate. Invece, il codice utente dovrebbe aprire/leggere/scrivere il file direttamente e gestire l'errore generato se il file non è accessibile.

+0

Bello, funziona perfettamente ... –

+0

Il current node documentatión [n o consiglia di utilizzare stat per verificare se esiste un file] [1]: [1]: https://nodejs.org/api/fs.html#fs_fs_stat_path_callback –

1

Si potrebbe aggiungere

var f; 

try { 
    var f = require('your-file'); 
} catch (error) { 

    // .... 
} 

if (f) { 
    console.log(f); 
} 
0

Il nodo documentazione does not recommend using stat to check wether a file exists:

Utilizzando fs.stat() per verificare l'esistenza di un file prima di chiamare fs.open(), FS .readFile() o fs.writeFile() non è raccomandato. Invece, il codice utente deve aprire/leggere/scrivere il file direttamente e gestire l'errore generato se il file non è disponibile.

Per verificare se un file esiste senza manipolarlo in seguito, è consigliato fs.access().

Se non c'è bisogno di leggere o scrivere il file che si dovrebbe usare fs.access, il modo semplice e asincrona è:

try { 
 
\t fs.accessSync(path) 
 
\t // the file exists 
 
}catch(e){ 
 
\t // the file doesn't exists 
 
}

Problemi correlati