Get the App
SLTechnology News&Howtos  ›  Development  › 

How nodejs detects the existence of a file

Shulou Source: shulou.com Published: 2022-06-03 13:18:11 10月19日 Update

这篇文章将为大家详细讲解有关nodejs如何检测文件是否存在,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

检测方法:1、使用"fs.exists(path,callback)";2、使用"await util.promisify(fs.stat)('文件路径')";3、使用"fs.access(path[,mode],callback);"。

本教程操作环境:windows7系统、nodejs 14.15.4版,DELL G3电脑。

nodejs检测文件是否存在的方法:

1、使用fs.exists

exists()函数可以测试某个路径下的文件是否存在。语法格式:

fs.exists(path, callback)

path 欲检测的文件路径

callback 回调

回调函数包含一个参数exists,true则文件存在,否则是false。

注:由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") )

目前 fs.exists 已被废弃,另外需要清楚, 只有在文件不直接使用时才去检查文件是否存在

示例:

fs.exists('/etc/passwd', function (exists) { util.debug(exists ? "it's there" : "no passwd!");});

2、使用 fs.stat

fs.stat返回一个 fs.Stats 对象,该对象提供了关于文件的很多信息,例如文件大小、创建时间等。其中有两个方法 stats.isDirectory()、stats.isFile() 用来判断是否是一个目录、是否是一个文件。

const stats = await util.promisify(fs.stat)('text1.txt'); console.log(stats.isDirectory()); // false console.log(stats.isFile()); // true

若只是检查文件是否存在,推荐使用下面的 fs.access。

3、使用 fs.access

fs.access 接收一个 mode 参数可以判断一个文件是否存在、是否可读、是否可写,返回值为一个 err 参数。

const file = 'text.txt'; // 检查文件是否存在于当前目录中。fs.access(file, fs.constants.F_OK, (err) => { console.log(`${file} ${err ? '不存在' : '存在'}`);}); // 检查文件是否可读。fs.access(file, fs.constants.R_OK, (err) => { console.log(`${file} ${err ? '不可读' : '可读'}`); }); // 检查文件是否可写。 fs.access(file, fs.constants.W_OK, (err) => { console.log(`${file} ${err ? '不可写' : '可写'}`); }); // 检查文件是否存在于当前目录中、以及是否可写。fs.access(file, fs.constants.F_OK | fs.constants.W_OK, (err) => { if (err) { console.error( `${file} ${err.code === 'ENOENT' ? '不存在' : '只可读'}`); } else { console.log(`${file} 存在,且可写`); } });关于"nodejs如何检测文件是否存在"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

Tags: Files checks tests methods parameters directories articles paths functions objects more modules good practical clear two information content just only Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno OPPO Reno Shulou Technology vpn MariaDB NVidia