2009-08-17 18 views

Respuesta

28

En .NET 4.0 que puede hacer:

dir.Attributes.HasFlag(FileAttributes.Hidden) 
+0

El método HasFlags() es una nueva adición a .NET 4. Es mucho más fácil de usar que la antigua comparación bit a bit. – dthrasher

15

Attributes es un valor Flags, por lo que es necesario comprobar si contiene FileAttributes.Hidden utilizando una comparación bit a bit, así:

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

El único problema es cuando intento evaluar lo anterior, todavía por pases ... a pesar de que el directorio está realmente escondido –

+1

Lo sentimos, pensó que buscabas _for_ directorios ocultos, no excluirlos. Corregido el código anterior. – bdukes

36

Cambiar su sentencia if para:

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

Necesitas use la máscara de bits ya que Atributos es una enumeración de bandera. Puede tener múltiples valores, por lo que las carpetas ocultas pueden estar ocultas Y otra bandera. La sintaxis anterior comprobará esto correctamente.

2

Este código funciona para mí en VB.Net;

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