所有文件都有FILE_ATTRIBUTE_ARCHIVE属性

时间:2017-05-10 14:43:36

标签: 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;
}

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

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

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

All files has archive attribute

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

P.S:MSDN告诉

FILE_ATTRIBUTE_ARCHIVE  32 (0x20)

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

1 个答案:

答案 0 :(得分:7)

&#34;存档&#34;属性并不意味着&#34;这个文件是一个档案&#34; (如ZIP或7Z文件)。相反,它typically means&#34;此文件需要备份&#34;:

  

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

     

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

我不认为它已经在实践中得到了很多使用(如果有的话)。