所有文件都具有FILE_ATTRIBUTE_ARCHIVE属性

joh*_*ovi 1 c c++ windows winapi file-attributes

我正在编写programm,它应该从std :: vector中的选择目录中检索所有文件的属性.

该代码显示,我如何获取文件属性.

DWORD attr_flags = GetFileAttributes(file_path);

if (attr_flags == INVALID_FILE_ATTRIBUTES) {
  std::cout << "Invalid file attributes." << std::endl;
  return;
}
Run Code Online (Sandbox Code Playgroud)

然后像这样解析退役的旗帜.

if (attr_flags & FILE_ATTRIBUTE_ARCHIVE) {
  attrs.push_back(defines::Attributes::kArchive);
  attr_flags &= ~FILE_ATTRIBUTE_ARCHIVE;
}

if (attr_flags & FILE_ATTRIBUTE_COMPRESSED) {
  attrs.push_back(defines::Attributes::kCompressed);
  attr_flags &= ~FILE_ATTRIBUTE_COMPRESSED;
}

/* etc... */
Run Code Online (Sandbox Code Playgroud)

所以,毕竟我打印结果到控制台并得到这个:

所有文件都有归档属性

任何人,请告诉我,为什么所有文件(甚至存档)都有归档属性?

PS:MSDN告诉我

FILE_ATTRIBUTE_ARCHIVE  32 (0x20)
Run Code Online (Sandbox Code Playgroud)

作为存档文件或目录的文件或目录.应用程序通常使用此属性标记文件以进行备份或删除.

Tho*_*mas 7

"archive"属性并不意味着"此文件是存档"(如ZIP或7Z文件).相反,它通常意味着 "需要备份此文件":

在Windows和OS/2上,创建或修改文件时,将设置存档位,并且在备份文件时,将清除存档位.因此,归档位的含义是:此文件将归档,或者:此文件尚未归档.

一个增量备份任务可以使用存档位来区分哪些文件已经备份,并且只选择新的或修改过的文件进行备份.

我不认为它在实践中被用得太多了(如果它曾经是).