1226 votos

Comprobar sincrónicamente si el archivo/directorio existe en Node.JS

¿Cómo puedo comprobar de forma sincrónica, utilizando node.JS ¿existe un archivo o directorio?

5voto

gsalgadotoledo Puntos 1055

Fs.exists() está obsoleto, no lo uses https://nodejs.org/api/fs.html#fs_fs_exists_path_callback

Usted podría implementar el núcleo nodejs manera utilizada en este: https://github.com/nodejs/node-v0.x-archive/blob/master/lib/module.JS#L86

function statPath(path) {
  try {
    return fs.statSync(path);
  } catch (ex) {}
  return false;
}

esto devolverá el objeto stats, entonces una vez que tengas el objeto stats podrías intentar

var exist = statPath('/path/to/your/file.js');
if(exist && exist.isFile()) {
  // do something
}

5voto

Vijay G Puntos 70
const fs = require('fs');

comprobar en la función como la siguiente,

if(fs.existsSync(<path_that_need_to_be_checked>)){
  // enter the code to excecute after the folder is there.
}
else{
  // Below code to create the folder, if its not there
  fs.mkdir('<folder_name>', cb function);
}

4voto

jstice4all Puntos 1672

Algunas respuestas aquí dicen que fs.exists y fs.existsSync son ambos obsoletos. Según la documentación, esto ya no es cierto. Sólo fs.exists está deprecada ahora:

Tenga en cuenta que fs.exists() está obsoleta, pero fs.existsSync() no. (El parámetro fs.exists() acepta parámetros que son inconsistentes con otras inconsistentes con otros callbacks de Node.JS. fs.existsSync() no utiliza una devolución de llamada).

Así que puede utilizar con seguridad fs.existsSync() para comprobar sincrónicamente si un archivo existe.

3voto

Ivo Wetzel Puntos 27802

El path no proporciona una versión sincrónica de path.exists por lo que hay que hacer trucos con el fs módulo.

Lo más rápido que puedo imaginar es usar fs.realpathSync que arrojará un error que tienes que atrapar, así que tienes que hacer tu propia función envolvente con un try/catch.

1voto

El uso de las pruebas de fileSystem (fs) activará objetos de error, que luego tendrá que envolver en una declaración try/catch. Ahórrese un poco de esfuerzo y utilice una función introducida en la rama 0.4.x.

var path = require('path');

var dirs = ['one', 'two', 'three'];

dirs.map(function(dir) {
  path.exists(dir, function(exists) {
    var message = (exists) ? dir + ': is a directory' : dir + ': is not a directory';
    console.log(message);
  });
});

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X