首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >std::filesystem::is_regular_file() vs ::exists()-可算作常规文件

std::filesystem::is_regular_file() vs ::exists()-可算作常规文件
EN

Stack Overflow用户
提问于 2022-08-03 21:16:22
回答 1查看 238关注 0票数 0

我使用Visual 2017 C++ 和MFC

我在MFC中有一个程序,它将文件收集为string,并将它们添加到zip文件中。

我想添加一个错误检查,在尝试添加文件之前,我要检查它是否存在。如果它存在,完美的话,我会将文件添加到zip中。如果没有,没有问题,我继续下一个文件。

我遇到了std::filesystem (这里),我看到了我认为可以工作的两个不同的函数:is_regular_file() (这里)和exists() (这里)。

然而,我不知道这两种方法中的哪一种。我将是zipping的文件类型从.txt.zip各不相同,还有许多任意的文件类型。

从我的研究来看,它们似乎是相似的,它们都返回一个bool值。

这两种功能有什么区别,哪一种更好呢?

此外,根据我的理解,这个库是相对较新的,可能不适合在MFC中使用。这是真的吗?如果是的话,我还能用什么来检查给定的文件路径,该文件是否存在于计算机上?

提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2022-08-04 09:43:49

使用档案()符号链接()目录()

有几个在std::文件系统中定义的文件类型

代码语言:javascript
运行
复制
Constant    Meaning
none        indicates that the file status has not been evaluated yet, or an error occurred when evaluating it
not_found   indicates that the file was not found (this is not considered an error)
regular     a regular file
directory   a directory
symlink     a symbolic link
block       a block special file
character   a character special file
fifo        a FIFO (also known as pipe) file
socket      a socket file
implementation-defined  an additional implementation-defined constant for each additional file type supported by the implementation (e.g. MSVC STL defines junction for NTFS junctions)
unknown     the file exists but its type could not be determined 

因此,乍一看,文件系统::exists()将是您想要的。

但是您要将文件添加到ZIP存档中,而AFAICT,ZIP只支持常规文件、符号链接和目录,所以您应该使用这些文件。

您不会存档套接字或NTFS连接,即使它们存在并在命令行中提供。

澄清:

“常规文件”是指具有(a)由文件系统存储的数据和(b)没有文件系统分配给它的语义的文件--即文件系统不知道如何读取或操作该文件。

例如,MS文档是MS Word理解的东西,但是文件系统只知道它是一堆字节。

另一方面,符号链接是文件系统存储的东西,它知道如何操作(遵循链接)。

块特殊文件实际上不是由文件系统存储的,而是操作系统其他部分所操作的元数据。

ZIP存档或RAR是文件系统存储的文件。但是它不知道如何读取它们或对它们进行操作,所以它们是常规文件。

在旧的Windows资源管理器中,桌面上的“快捷方式”是文件系统存储的小文件,但是知道如何读取它们的是资源管理器--它们不是符号链接,而是常规文件。(也许情况仍然如此,我最近还没查过。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73227898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档