📌  相关文章
📜  节点文件夹或文件存在 - Javascript (1)

📅  最后修改于: 2023-12-03 15:41:25.702000             🧑  作者: Mango

节点文件夹或文件存在 - Javascript

在使用Javascript进行文件操作时,经常需要判断一个节点文件夹或文件是否存在。这个过程可以通过Node.js提供的fs模块中的fs.stat()函数来完成。

fs.stat

fs.stat()用来返回一个节点文件或者目录的详细信息,包括文件类型、大小、修改时间等。具体使用方法如下:

const fs = require('fs');
fs.stat(path, (err, stats) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(`File Size: ${stats.size}`);
  console.log(`Is File: ${stats.isFile()}`);
  console.log(`Is Directory: ${stats.isDirectory()}`);
});

其中path为目标文件或路径的绝对路径。当函数执行完毕时,会返回一个fs.Stats对象,可以通过该对象上的方法和属性来判断文件类型、大小等信息。

判断文件/文件夹是否存在

使用fs.stat()函数之后,可以通过isFile()和isDirectory()方法来判断目标路径是否是文件或目录。如果需要判断一个路径是否存在,可以按照下面的方法来实现:

const fs = require('fs');
const filePath = '/path/to/file';
try {
    fs.accessSync(filePath, fs.constants.F_OK);
    console.log(`File ${filePath} exists.`);
    // 文件存在
} catch (err) {
    console.error(`File ${filePath} does not exist.`);
    // 文件不存在
}

其中accessSync()函数是用来检查一个路径是否存在,有可选的mode参数来指定需要检查的文件访问权限。对于fs.constants.F_OK,表示检查目标路径是否存在。如果存在,则可以说明该路径所对应的文件或路径存在,否则就是不存在的情况。

异步判断文件/文件夹是否存在

如果是需要异步判断一个文件或路径是否存在,可以采用fs.stat()方法的回调函数来判断,代码如下:

const fs = require('fs');
const filePath = '/path/to/file';
fs.access(filePath, fs.constants.F_OK, (err) => {
    if (err) {
        console.error(`File ${filePath} does not exist.`);
    } else {
        console.log(`File ${filePath} exists.`);
    }
});

除错误回调外,该方法只有一个回调参数,这个参数是检查结束后所需要执行的回调函数。如果回调函数没有异常,则可以说明存在文件或路径,否则就是不存在的情况。

结论

通过fs.stat()函数和fs.access()方法,可以快速地判断一个节点文件或者目录是否存在。这样可以保证后续的文件读写操作是正常的,并避免了无效的操作。