2012-02-03 5 views
5

Perché quando do il percorso "c:" mi ha cambiato direttamente nella cartella dell'applicazione?C# perché quando il percorso è "C:" directoryInfo mi porta nella cartella dell'applicazione?

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

L'output è la seguente:

C: \ Users ... \ Documenti \ Visual Studio 2010 \ progetti \ consoleApplication9 \ bin \ debug

Ma quando ho dare @"c:\" va al disco c: nonostante quello "d:" e @"d:\" prende al disco d:.

Così ho bisogno di un modo per far "c:" prende su disco c:

Grazie in anticipo!

+3

Perché è così che ha funzionato dal 1983 e sarebbe fonte di confusione per il cambiamento adesso! –

+0

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

+0

non funziona per la mia applicazione la mia applicazione mi limita a modificare la mia domanda .. controllala –

risposta

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

sei l'unico che ha capito il mio punto .. quindi suppongo che questo sia l'unico modo per farlo bene grazie mille –

+0

tu sei l'unico che ha ottenuto il mio punto .. quindi immagino che questo sia l'unico modo per fare bene grazie mille –

+5

@MurHafSoz: Se molte persone sono non riuscendo a capirti, dovresti considerare di spiegarti meglio. –

6

C: è solo l'identificatore del volume, quindi cambierà il percorso corrente su quel volume, che sarebbe il percorso di lavoro dell'applicazione.

D: consente di eseguire il root semplicemente perché la cartella corrente per quel volume si trova nella directory principale.

+0

che significa che dovresti usare 'C: \' che specifica il percorso sul disco pure – linkerro

15

Basta "c:" significa "la directory corrente sull'unità C", mentre @"c:\" significa "radice del drive C". Questo funziona allo stesso modo dal prompt dei comandi ...

0

enter image description here

Utilizza il seguente

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

La directory di base al momento in cui si fa c: l'applicazione non capisce che così restituisce la directory da cui è stata avviata/eseguita l'applicazione.

noti che dir = {.} Se si sono passati in un percorso di directory letterale si sarebbe ottenuto i risultati attesi ..

Problemi correlati