По какой-то причине, когда я пытаюсь проверить файл с помощью FileAttributes.Normal, мне кажется, что почти ни один из моих файлов не отображается в моем поиске. Согласно API, это потому, что установлены некоторые другие атрибуты. Ничего страшного, мне просто нужно искать то, что мне не нужно. Вот где возникает проблема.
Я невероятно устарел в математике с побитовыми операторами, особенно когда дело касается одновременной проверки нескольких вещей. Я пытаюсь выяснить, как получить оператор if для возврата false, если присутствует какой-либо из определенного количества атрибутов файла (т.е. НИКТО из указанных атрибутов не может быть найден, если он хочет пройти через мой поиск). Вот что я написал до сих пор:
if ((File.GetAttributes(stringFileName) &
(FileAttributes.System | FileAttributes.Hidden | FileAttributes.Archive |
FileAttributes.Encrypted | FileAttributes.Temporary)) == 0)
Я думаю, что нужно взять совокупность всех различных атрибутов и сравнить их с исходными атрибутами файла. Если найдено какое-либо совпадение, все отображается нулевым. Однако, похоже, это работает не так, как задумано. Должен ли я использовать другой оператор, кроме побитового и (&)?
Спасибо!
Обновление:
Похоже, проблема заключалась не в логике битовой маски, а в FileAttributes.Archive. По какой-то причине почти все мои файлы были отмечены этим флагом (возможно, это означает, что они предназначены для резервного копирования?). По крайней мере, теперь я знаю, а знание - половина дела. :)