当前位置: 首页 > 知识库问答 >
问题:

node.js检查路径是文件还是目录

仲孙景胜
2023-03-14

我似乎无法得到任何解释如何做到这一点的搜索结果。

我想做的只是能够知道给定的路径是一个文件还是一个目录(文件夹)。

共有3个答案

施锋
2023-03-14

说真的,问题存在了五年却没有漂亮的门面?

function is_dir(path) {
    try {
        var stat = fs.lstatSync(path);
        return stat.isDirectory();
    } catch (e) {
        // lstatSync throws an error if path doesn't exist
        return false;
    }
}
祁嘉言
2023-03-14

我们可以使用新的fs.promises API

const fs = require('fs').promises;

(async() => {
    const stat = await fs.lstat('test.txt');
    console.log(stat.isFile());
})().catch(console.error)

下面是异步检测路径是文件还是目录的方法,这是Node中推荐的方法。使用fs.lstat

const fs = require("fs");

let path = "/path/to/something";

fs.lstat(path, (err, stats) => {

    if(err)
        return console.log(err); //Handle error

    console.log(`Is file: ${stats.isFile()}`);
    console.log(`Is directory: ${stats.isDirectory()}`);
    console.log(`Is symbolic link: ${stats.isSymbolicLink()}`);
    console.log(`Is FIFO: ${stats.isFIFO()}`);
    console.log(`Is socket: ${stats.isSocket()}`);
    console.log(`Is character device: ${stats.isCharacterDevice()}`);
    console.log(`Is block device: ${stats.isBlockDevice()}`);
});

使用同步API时注意:

使用同步窗体时,会立即引发任何异常。您可以使用try/catch来处理异常或允许它们冒泡。

try{
     fs.lstatSync("/some/path").isDirectory()
}catch(e){
   // Handle error
   if(e.code == 'ENOENT'){
     //no such file or directory
     //do something
   }else {
     //do something else
   }
}
益楷
2023-03-14

下面应该会告诉你。从文档中:

fs.lstatSync(path_string).isDirectory() 

从fs.stat()和fs.lstat()返回的对象就是这种类型。

stats.isFile()
stats.isDirectory()
stats.isBlockDevice()
stats.isCharacterDevice()
stats.isSymbolicLink() (only valid with fs.lstat())
stats.isFIFO()
stats.isSocket()

上述解决方案将抛出一个错误,如果;对于ex,文件目录不存在。

如果您想要truefalse方法,请尝试fs.existssync(dirPath)&&fs.lstatsync(dirPath)。isDirectory();,正如Joseph在下面的注释中提到的那样。

 类似资料:
  • 问题内容: 我似乎无法获得任何说明如何执行此操作的搜索结果。 我要做的就是能够知道给定的路径是文件还是目录(文件夹)。 问题答案: 应该告诉你。从文档: 从fs.stat()和fs.lstat()返回的对象属于这种类型。 注意: 将 上述溶液 将一个IF; 例如,or或不存在。 如果您想要一个或方法,请尝试按约瑟夫在下面的评论中所述。

  • 我想检查路径是文件还是目录。如果是目录,那么将目录和文件分别记录下来。稍后我想将它们作为json对象发送。 nodejs binding.lstat(PathModule._Makelong(路径)) 更新:找到解决方案。我必须这样添加testFolder+文件:

  • 本文向大家介绍Node.js 检查文件或目录是否存在,包括了Node.js 检查文件或目录是否存在的使用技巧和注意事项,需要的朋友参考一下 示例 异步地 同步地 在这里,我们必须将函数调用包装在一个try/catch块中以处理错误。            

  • 问题内容: 如何检查 文件 的存在? 在模块的文档中,有方法的说明。但是,据我了解,它只检查目录的存在。而且我需要检查 文件 ! 如何才能做到这一点? 问题答案: 为什么不尝试打开文件? 无论如何,经过一分钟的搜索,请尝试以下操作: 对于Node.js v0.12.x及更高版本 双方并已弃用 *编辑: 已更改: 至: 林特抱怨双重等于不是三次等于。 使用fs.stat:

  • 问题内容: 如何使用 node.js 同步检查文件或目录是否存在? 问题答案: 多年来,这个问题的答案已经改变。在 目前的 答案是在此间举行的顶部,然后用按时间顺序多年的各种答案: 当前答案 您可以使用: 它已被弃用了几年,但现在已不再使用。从文档: 请注意,不建议使用,但不建议使用。(用于接受与其他Node.js回调不一致的参数的回调参数。不使用回调。) 您已经明确要求进行 同步 检查,但是如果

  • 我想检查一个链接的href是否是网站路径之后的文件。代码如下: 有没有办法让它检查在“http://127.0.0.1:5500”后面是“/”还是“/index.html”?谢谢你!

  • 问题内容: 除了检查每个可能的扩展名外,我如何检查文件是mp3文件还是图像文件? 问题答案: 您可以使用来识别图像文件。 要查找有关MP3和其他音频/视频文件的更多信息,建议使用 php- mp4info getID3() 。

  • 问题内容: 就像标题中所说的,绝对路径名和相对路径名有什么区别?我现在正在上一门计算机组织课程,而我正在上的讲座是Unix中的速成班。演讲幻灯片说: 作为参考,“上一张幻灯片”基本上显示了一个文件树,其根目录/为顶级节点。 幻灯片后显示: 我仍然对绝对路径名和相对路径名之间的区别感到困惑。例如,我在Mac上。我的根目录是/。要从/获得我的文档,我必须这样做。 进入文档后,我需要访问一个名为的文件夹