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
}