2008-10-30 16 views
11

Al llamar al DirectoryInfo.GetDirectories(".") en una instancia de una clase DirectoryInfo que apunta a una carpeta válida (excluyendo las raíces de unidad), el resultado es una matriz DirectoryInfo cuyo primer elemento (y único) apunta a un directorio no válido con el mismo nombre, debajo de sí mismo .¿Es esto un error en DirectoryInfo.GetDirectories (string searchPattern)?

Por ejemplo:

static void Main(string[] args) 
{ 
    DirectoryInfo di = new DirectoryInfo("c:\\temp"); 
    DirectoryInfo[] dis = di.GetDirectories("."); 
    Console.WriteLine(dis[0].FullName); 
} 

Imprime un directorio inexistente:

c:\temp\temp 

entiendo que en Windows, un "" se refiere al directorio actual. Eso podría ser aceptable para mí si el método devolviera "c: \ temp", pero devolver un subdirectorio falso con el mismo nombre parece absolutamente el comportamiento incorrecto.

Debería ser capaz de afirmar que cualquier objeto DirectoryInfo devuelto por esta función realmente existe .... ¿verdad?

I decompilados la clase utilizando .NET Reflector, pero conduce a este método

internal static string[] InternalGetFileDirectoryNames(string path, string userPathOriginal, string searchPattern, bool includeFiles, bool includeDirs, SearchOption searchOption)" 

que es una bestia y no me siento como caminar por la lógica en mi cabeza. Es claramente una falla en mi humilde opinión.

FYI - a "*" funciona como se esperaba, antes de que alguien pregunte.

+0

interesante que menciona la ayuda .. pero no. – Greg

+0

Tiene un buen punto. Sin embargo, ¿no es esta una de esas cosas que "siempre ha sido así" y todos siempre filtran el. y ... listados de directorios? – ScottCher

+1

@ScottCher en DOS si hago "dir". en un directorio, no obtengo ningún resultado inexistente. Acabo de recibir "." y ".." (ambos existen) – TheSoftwareJedi

Respuesta

8

Puedo confirmar lo que dices, y no puedo ver ninguna explicación racional para él, entonces estoy votando ERROR.

lo creo así, yo submitted it a Microsoft

Cuestiones relacionadas