关于std::filesystem::is_regular_file(path)
,cppreference.com 他说
检查给定的文件状态或路径是否与常规文件…对应。相当于
s.type() == file_type::regular
。
例如,在Linux内核中,文件类型在头文件sys/stat.h
中声明。下面列出了每种Linux文件类型的类型名称和符号名称:
该函数在Windows上检查的内容是什么?
发布于 2022-04-18 07:38:07
由于我们讨论的是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_REPARSE_TAG_MOUNT_POINT
、IO_REPARSE_TAG_SYMLINK
或目录,那么它就是一个常规文件。
https://stackoverflow.com/questions/71908718
复制相似问题