【问题标题】:All files has FILE_ATTRIBUTE_ARCHIVE attribute所有文件都有 FILE_ATTRIBUTE_ARCHIVE 属性
【发布时间】:2017-05-10 14:43:36
【问题描述】:

我正在开发一个程序,该程序应该从 std::vector 中选择的目录中检索所有文件的属性。

这段代码显示了我如何获取文件属性:

DWORD attr_flags = GetFileAttributes(file_path);

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

并且代码会像这样解析检索到的标志:

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... */

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

谁能告诉我,为什么所有文件(甚至不是存档)都有存档属性?

P.S:MSDNtell's

FILE_ATTRIBUTE_ARCHIVE  32 (0x20)

作为存档文件或目录的文件或目录。应用程序通常使用此属性来标记要备份或删除的文件。

【问题讨论】:

    标签: c++ c windows winapi file-attributes


    【解决方案1】:

    “存档”属性并不意味着“此文件是存档”(如 ZIP 或 7Z 文件)。而是typically means“这个文件需要备份”:

    在 Windows 和 OS/2 上,当文件被创建或修改时,归档位被设置,当文件被备份时,归档位被清除。因此,归档位的含义是:此文件应归档,或:此文件尚未归档

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

    我认为它不再在实践中被大量使用(如果曾经有过的话)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多