2017-05-10 3 views
0

私は、std :: vectorの選択されたディレクトリからすべてのファイルの属性を取得する必要があります。すべてのファイルはFILE_ATTRIBUTE_ARCHIVE属性を持っています

このコードは、どのようにファイル属性を取得しているかを示しています。

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 TELLの

FILE_ATTRIBUTE_ARCHIVE 32 (0x20) 

アーカイブファイルまたはディレクトリのファイルまたはディレクトリ。アプリケーションは、通常、この属性を使用してファイルのバックアップまたは削除をマークします。

答えて

6

"archive"属性は、 "このファイルはアーカイブです"(ZIPまたは7Zファイルのような)という意味ではありません。むしろ、「このファイルをバックアップする必要があり、」それtypically means:、ファイルが作成または変更されたときに

WindowsとOS/2上では、アーカイブビットが設定され、ファイルがバックアップされたときアーカイブビットがクリアされます。したがって、アーカイブビットの意味はです。このファイルのアーカイブはまたはです。このファイルはアーカイブされていません

増分バックアップタスクは、アーカイブビットを使用して、どのファイルがすでにバックアップされているかを識別し、バックアップ用の新しいファイルまたは変更されたファイルのみを選択することがあります。

実際にはもう使用されていないと思います(これまであった場合)。

関連する問題