Saltar al contenido

NodeJs: fs.stat () o fs.access () para verificar si existe una carpeta?

Solución:

Supongo que la documentación sugiere usar fs.access para verificar si un archivo existe cuando no hay manipulación después es porque es una API simple y de nivel inferior con el único propósito de verificar los metadatos de acceso a archivos (que incluyen si un archivo existe o no). Una API más simple también podría ser un poco mejor en términos de rendimiento, ya que puede ser simplemente una asignación directa al código nativo subyacente. (NOTA: No he hecho ningún benchmark, tomo mi afirmación con granito de arena).

fs.stat proporcionar un mayor nivel de abstracción en comparación con fs.access. Devuelve información más allá del acceso a archivos.

import {promises as fs} from "fs";
import * as oldfs from "fs";

(async function() {
    // fs.stat has higher level abstraction
    const stat = await fs.stat(__dirname);
    console.log(stat.isDirectory());
    console.log(stat.isFile());
    console.log(stat.ctime);
    console.log(stat.size);

    try {
        // fs.access is low level API, it throws error when it doesn't match any of the flags
        // is dir exists? writable? readable?
        await fs.access(__dirname, oldfs.constants.F_OK | oldfs.constants.W_OK | oldfs.constants.R_OK);
    } catch (error) {
        console.log(`${__dirname} is not exists / writable / readable`);
    }
})();

Puede hacerlo fácilmente de forma sincrónica a través de existsSync().

Pero si quieres hacerlo de forma asincrónica, hazlo así:

await fs.promises.access("path");

O ponlo en un try-catch como este …

try {
     await fs.promises.access("path");
    // The check succeeded
} catch (error) {
    // The check failed
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *