Подтвердить что ты не робот

Как проверить, скрыт ли каталог на С#?

У меня есть этот цикл:

  foreach (DirectoryInfo dir in downloadedMessageInfo.GetDirectories())
        {
            if (dir.Attributes != FileAttributes.Hidden)
            {
                dir.Delete(true);
            }
        }

Как я могу правильно пропустить все скрытые каталоги?

4b9b3361

Ответ 1

В .NET 4.0 вы можете:

dir.Attributes.HasFlag(FileAttributes.Hidden)

Ответ 2

Измените свой оператор if на:

if ((dir.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)

Вам нужно использовать битовую маску, поскольку атрибуты являются перечислением флага. Он может иметь несколько значений, поэтому скрытые папки могут быть скрыты и еще один флаг. Вышеупомянутый синтаксис будет правильно проверяться.

Ответ 3

Attributes - это Flags значение, поэтому вам нужно проверить, содержит ли он FileAttributes.Hidden с помощью поразрядного сравнения, например:

if ((dir.Attributes & FileAttributes.Hidden) == 0)

Ответ 4

Этот код работает для меня в VB.Net;

If (dir.Attributes.Tostring.Contains("Hidden") Then
    ' File is hidden
Else
    ' File is not hidden
EndIf