如何在Nodejs中检查文件/路径是否存在?

441 阅读1分钟

这是一个简短的教程,如何用nodejs代码检查文件系统中的文件是否存在。我们有很多方法可以检查文件在节点中是否存在

  • 使用 existsSync 和 exists
  • fs访问和accessSync
  • 异步和 await promises

文件检查可以通过同步和异步进行

exists函数

fs提供了两个函数来检查文件路径在操作系统文件系统中是否存在。exists :这是一种异步检查方式existsSync :同步检查文件是否存在。

下面是一个existsSync的例子

const fs = require("fs");
 console.log('start');

if (fs.existsSync("user.xml")) {
 console.log('exists');
}
 console.log('completed');

这里是路径存在与否的例子

const fs = require("fs");
 console.log('start');

if (fs.exists("user.xml"(err) => {
    if(err)
  console.log("not exists");
});
 console.log('completed');

使用fs access和accessSync函数检查文件或文件夹是否存在

access 和 函数来检查文件系统的读写权限 函数用于同步执行, 用于异步操作accessSync access accessSync

fs.constants.F_OK 检查文件是否可见 fs.constants.R_OK和fs.constants.W_OK是用于读取和写入权限。

下面是一个accessSync的例子

const fs = require("fs");

if (fs.accessSync("user.xml",fs.constants.F_OK)) {
 console.log('exists');
}
 console.log('completed');

下面是一个访问函数的例子

const fs = require("fs");

fs.access("user.xml", fs.constants.F_OK, (err) => {
 if(err){
   console.log('file not exists',err)
 }
 console.log('file exists');
});

使用Async和Await的承诺

我们也可以使用async和await来检查异步执行。

下面是一系列的步骤

  • isFileExists方法,新的承诺被创建并解析为一个存在的文件,否则解析为一个错误。
function isFileExists(path){
  return new Promise((resolve, fail) => fs.access(path, fs.constants.F_OK, 
    (err, data) => err ? fail(err) : resolve(data))

}

async function checkFile() {
  var exists = await isFileExists('user.xml');
  if(exists){ 
    console.log('file exists');
  }
}

结语

综上所述,我们学习了使用fs模块在Nodejs中检查路径存在的不同方法。