如何检查给定路径是 node.js 中的文件还是目录?
有时需要检查给定的路径是文件还是目录,以便根据结果执行不同的操作。例如,分别记录目录和文件的信息。
在 Node.js 中,文件处理由 fs 模块处理。你可以在这里读更多关于它的内容。我们可以通过同步和异步方式检查 Node.js 中文件或目录的路径。
注意:如果您关心应用程序性能,通常最好使用异步版本。
同步方法:同步操作非常适合在返回模块之前执行一次性文件/目录操作。要在 fs 模块中检查同步模式下的路径,我们可以使用 statSync() 方法。 fs.statSync(path) 方法返回分配给变量 stats 的 fs.Stats 的实例。 fs.Stats 对象提供有关文件的信息。如果文件路径是 File,stats.isFile() 方法返回 true,否则返回 false。如果文件路径是目录,则 stats.isDirectory() 方法返回 true,否则返回 false。
示例 1:
// Require the given module
var fs = require('fs');
// Use statSync() method to store the returned
// instance into variable named stats
var stats = fs.statSync("/Users/divyarani/Documents/geekforgeeks/geeks.js");
// Use isFile() method to log the result to screen
console.log('is file ? ' + stats.isFile());
var stats = fs.statSync("/Users/divyarani/Documents/geekforgeeks/geek");
// Use isDirectory() method to log the result to screen
console.log('is directory ? ' + stats.isDirectory());
输出:
is file ? true
is directory ? true
示例 2:
// Require the given module
var fs = require('fs');
// Use statSync() method to store the returned
// instance into variable named stats
var stats = fs.statSync("/Users/divyarani/Documents/geekforgeeks/geek");
// Use isFile() method to log the result to the screen
console.log('is file ? ' + stats.isFile());
var stats = fs.statSync("/Users/divyarani/Documents/geekforgeeks/geeks.js");
// Use isDirectory() method to log the result to screen
console.log('is directory ? ' + stats.isDirectory());
输出:
is file ? false
is directory ? false
异步方法:在异步版本中,函数内的代码块对最终用户来说大部分是非阻塞的,并且不会阻止用户对各个子进程执行不同的操作。要在 fs 模块中以异步模式检查路径,我们可以使用 fs.stat() 方法。 fs.stat() 方法有两个参数,第一个参数是路径,第二个参数是回调函数,有两个参数,一个是错误发生时的错误,第二个参数是调用 fs.stat() 检索到的数据存储在 stats 变量中的方法。如果文件路径是 File,stats.isFile() 方法返回 true,否则返回 false。如果文件路径是目录,则 stats.isDirectory() 方法返回 true,否则返回 false。
示例 1:
// Require the given module
var fs = require('fs'),
path = "/Users/divyarani/Documents/geekforgeeks/geek"
// Use stat() method
fs.stat(path, (err, stats) => {
if( !err ){
if(stats.isFile()){
console.log('is file ? ' + stats.isFile());
}
else if(stats.isDirectory()){
console.log('is directory? ' + stats.isDirectory());
}
}
else
throw err;
});
输出:
is directory? true
示例 2:
// Require the given module
var fs = require('fs'),
path = "/Users/divyarani/Documents/geekforgeeks/geeks.js"
// Use stat() method
fs.stat(path, (err, stats) => {
if( !err ){
if(stats.isFile()){
console.log('is file ? ' + stats.isFile());
}
else if(stats.isDirectory()){
console.log('is directory? ' + stats.isDirectory());
}
}
else
throw err;
});
输出:
is file ? true