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

7,524 阅读1分钟

How to check the file/path exists in Nodejs Example

这是一个关于如何使用nodejs代码检查文件系统中是否存在文件的简单教程。

我们可以使用各种方法来查看一个文件是否存在于Nodes中:

  • 使用 existsSync 和 exists
  • fs访问和accessSync
  • Async和await承诺

文件检查可以通过同步和异步完成。

fs exists函数

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

下面是一个existenceSync的例子

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

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

输出:

start
exists
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的承诺

我们也可以使用asyncawait 来检查异步执行。

下面是一系列的步骤

  • 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中检查路径存在的不同方法。