2012-02-03 8 views
5

¿Por qué cuando le doy la ruta "c:" me cambió directamente a la carpeta de la aplicación?C# ¿por qué cuando la ruta es "C:" el directoryInfo me lleva a la carpeta de la aplicación?

static void Main(string[] args) 
    { 
     DirectoryInfo dir = new DirectoryInfo("c:"); 
     Console.WriteLine(dir.FullName); 
     Console.ReadLine(); 
    } 

La salida es la siguiente:

c: \ users ... \ Documents \ Visual Studio 2010 \ proyectos \ consoleApplication9 \ bin \ debug

Pero cuando dar @"c:\" va al disco c: a pesar de que "d:" y @"d:\" lleva al disco d:.

así que necesito una manera de dejar "c:" lleva al disco c:

Gracias de antemano!

+3

Porque así es como ha funcionado desde 1983 y sería confuso para el cambio ¡Es ahora! –

+0

Pruebe 'DirectoryInfo dir = new DirectoryInfo (" c: \\ ");' o 'DirectoryInfo dir = new DirectoryInfo (@" c: \ ");'. –

+0

no funciona para mi aplicación mi aplicación solo edito mi pregunta ... compruébelo –

Respuesta

2
static void Main(string[] args) 
    { 
     string YourDir = "c:"; 

     if (!YourDir.Substring(YourDir.Length - 1, 1).Equals(@"\")) 
      YourDir += @"\"; 
     DirectoryInfo dir = new DirectoryInfo(YourDir); 
     Console.WriteLine(dir.FullName); 
     Console.ReadLine(); 
    } 
+0

usted es el único que entendió mi punto .. así que supongo que esta es la única manera de hacerlo bien muchas gracias –

+0

eres el único que entendió mi punto ... así que supongo que esta es la única manera de hacerlo bien muchas gracias –

+5

@MurHafSoz: Si mucha gente está No entendiéndote, deberías considerar explicarte más claramente. –

6

C: es solo el especificador de volumen, por lo que cambiará a su ruta actual en ese volumen, que sería la ruta de trabajo de la aplicación.

D: lo lleva a la raíz simplemente porque su carpeta actual para ese volumen está en su raíz.

+0

eso significa que debe usar 'C: \' que especifica la ruta en el disco también – linkerro

15

Just "c:" significa "el directorio actual en el disco C" mientras que @"c:\" significa "raíz del disco C". Esto funciona de la misma manera desde un símbolo del sistema ...

0

enter image description here

Usar la siguiente

static void Main(string[] args) 
    {   
     DirectoryInfo dir = new DirectoryInfo(@"c:\"); 
     Console.WriteLine(dir.FullName); 
     Console.ReadLine(); 
    }  

el directorio base en el momento en que haces c: la aplicación no entiende que por lo devuelve el Directorio de donde se lanzó/ejecutó la aplicación.

en cuenta que dir = {.} Si hubiera pasado en una ruta de directorio literal que habría conseguido los resultados esperados ..

Cuestiones relacionadas