技术文摘
Node.js 中如何查询文件是否存在
Node.js 中如何查询文件是否存在
在Node.js开发过程中,经常需要判断文件是否存在,这在很多场景下都非常关键,比如在读取或写入文件之前,先确认文件是否存在可以避免很多不必要的错误。下面将介绍几种在Node.js中查询文件是否存在的方法。
使用 fs.statSync 方法
fs.statSync 是Node.js内置文件系统模块(fs)中的同步方法。它可以获取文件或目录的详细信息,包括文件是否存在。示例代码如下:
const fs = require('fs');
function checkFileExistsSync(filePath) {
try {
const stats = fs.statSync(filePath);
return stats.isFile();
} catch (error) {
return false;
}
}
const filePath = 'test.txt';
const exists = checkFileExistsSync(filePath);
if (exists) {
console.log('文件存在');
} else {
console.log('文件不存在');
}
在这段代码中,fs.statSync 尝试获取指定路径的文件信息。如果文件存在,它将返回文件的状态信息,通过 stats.isFile() 可以判断它是否为文件。如果文件不存在,fs.statSync 会抛出错误,在 catch 块中捕获并返回 false。
使用 fs.stat 方法
fs.stat 是 fs.statSync 的异步版本,适合在异步操作场景中使用。示例代码如下:
const fs = require('fs');
function checkFileExists(filePath, callback) {
fs.stat(filePath, (err, stats) => {
if (err) {
return callback(false);
}
return callback(stats.isFile());
});
}
const filePath = 'test.txt';
checkFileExists(filePath, (exists) => {
if (exists) {
console.log('文件存在');
} else {
console.log('文件不存在');
}
});
这里 fs.stat 接收文件路径和一个回调函数。当操作完成时,回调函数会被调用,通过判断 err 是否存在来确定文件是否存在。如果 err 存在,说明文件不存在,反之则通过 stats.isFile() 判断是否为文件。
使用 fsPromises.stat 方法
Node.js 的 fs/promises 模块提供了基于 Promise 的文件系统操作方法,使得代码更具可读性和可维护性。示例代码如下:
const fs = require('fs').promises;
async function checkFileExistsAsync(filePath) {
try {
const stats = await fs.stat(filePath);
return stats.isFile();
} catch (error) {
return false;
}
}
const filePath = 'test.txt';
checkFileExistsAsync(filePath).then((exists) => {
if (exists) {
console.log('文件存在');
} else {
console.log('文件不存在');
}
});
在这段代码中,fsPromises.stat 返回一个 Promise,通过 await 等待操作完成。如果成功获取文件状态信息,通过 stats.isFile() 判断文件是否存在,捕获到错误则返回 false。
通过以上几种方法,开发者可以根据具体的需求和场景,灵活选择在Node.js中查询文件是否存在的方式。
TAGS: 文件系统 文件存在判断 Node.js开发 Node.js文件查询