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

在Windows上,std::filesystem::常规文件(路径)是什么意思?

呼延弘方
2023-03-14

关于std::filesystem::is_regular_file(path),cppreference。com说:

检查给定的文件状态或路径是否对应于与s.type()==file_type::regular等效的常规文件[…]。

例如,在Linux内核中,文件类型在头文件sys/stat.h中声明。下面列出了每种Linux文件类型的类型名和符号名:

  • 插座(S_IFSOCK)
  • 符号链接(S_IFLNK)
  • 常规文件(S_IFREG)
  • 阻止特殊文件(S_IFBLK)
  • 目录(S_IFDIR)
  • 字符装置(S_IFCHR)
  • FIFO(命名管道)(S_IFIFO)

这个函数在Windows上检查的是什么?

共有1个答案

朱高丽
2023-03-14

既然我们正在讨论Windows,我们可以考虑MS对标准库的实现,这就是它们如何确定文件是否是正则的:

if (_Bitmask_includes(_Attrs, __std_fs_file_attr::_Reparse_point)) {
    if (_Stats._Reparse_point_tag == __std_fs_reparse_tag::_Symlink) {
        this->type(file_type::symlink);
        return;
    }

    if (_Stats._Reparse_point_tag == __std_fs_reparse_tag::_Mount_point) {
        this->type(file_type::junction);
        return;
    }

    // All other reparse points considered ordinary files or directories
}

if (_Bitmask_includes(_Attrs, __std_fs_file_attr::_Directory)) {
    this->type(file_type::directory);
} else {
    this->type(file_type::regular);
}

因此,如果它不是IO_repasse_TAG_MOUNT_POINTIO_repasse_TAG_SYMLINK或目录,那么它就是一个常规文件。

 类似资料:
  • 我正在启动一个新的vue.js项目,因此我使用vue cli工具构建了一个新的webpack项目(即)。 在浏览生成的文件时,我注意到文件中有以下导入: 我以前从未在路径中看到at标志()。我怀疑它允许相对路径(也许?),但我想确定我了解它真正的功能。 我尝试在网上搜索,但找不到解释(可能是因为搜索“at sign”或使用文字字符作为搜索条件没有帮助)。 在这条路径中做了什么(链接到文档会很好),

  • 当程序运行时,变量是保存数据的好方法,但变量、序列以及对象中存储的数据是暂时的,程序结束后就会丢失,如果希望程序结束后数据仍然保持,就需要将数据保存到文件中。 Python 提供了内置的文件对象,以及对文件、目录进行操作的内置模块,通过这些技术可以很方便地将数据保存到文件(如文本文件等)中。 关于文件,它有两个关键属性,分别是“文件名”和“路径”。其中,文件名指的是为每个文件设定的名称,而路径则用

  • 问题内容: 我只在工作时使用Mac,我需要将JAVA_HOME设置为JDK的正确路径。我下载了JDK,安装了它,现在到处都找不到。我一直在寻找解决方案的互联网,但是没有文件夹Libraries/ Java。 问题答案: 该位置已从Java 6(由Apple提供)更改为Java 7及更高版本(由Oracle提供)。找出这种情况的最佳 通用 方法是运行 这是一种本机支持的方法,可以找到默认Java安装

  • 问题内容: 我不了解git中与CrLf设置相关的复杂性, 我正在一个团队中开发一个跨平台项目,希望Windows和Linux开发人员能够一起工作,而无需将git标记的文件仅由于行尾样式而修改。 各种设置是什么意思?选择任何选项会有什么后果?而对我来说,最好的解决方案是什么? 是的,我知道这个问题,那里的答案没有见地,因此无济于事。 问题答案: 的三个值: -当内容进入存储库(已提交)时,其行尾将转

  • 问题内容: 我正在使用python进行文件操作。 我有一个文件路径为: 当我使用python打开文件时,它说: 但是,该文件存在于驱动器上。 可能是因为窗口包含空格,所以无法正确获取“ SEM 2”。 如何在窗口路径的路径中处理此类空格? 问题答案: 路径中的空格没有问题,因为您没有使用“外壳”来打开文件。这是Windows控制台上的一个会话来证明这一点。你做错了什么

  • Im只在工作时使用Mac,我需要将JAVA_HOME设置为JDK的正确路径。我下载了JDK,安装了它,现在到处都找不到了。我在internet上寻找解决方案,但没有文件夹库/Java。