2012-02-03 3 views
5

なぜパス "c:"を与えるとアプリケーションフォルダに直接変更されましたか?c#パスが "C:"の場合、directoryInfoはアプリケーションフォルダに移動しますか?

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

出力は以下の通りです:

C:\ユーザー...プロジェクト\ Visual Studioの 2010 \ \ドキュメント\ consoleApplication9 \ビン\デバッグ

しかし、私@"c:\" にもかかわらず、"d:"@"d:\"がディスクd:にかかっても、それはディスクになります。

だから私は"c:"がディスクに事前にc:

感謝を取るようにする方法が必要です!

+3

..あなたが期待する結果を得ているだろう文字通りのディレクトリパスに渡されているだろうし、それが変更に混乱するならばそれは今! –

+0

'DirectoryInfo dir = new DirectoryInfo(" c:\\ ");'または 'DirectoryInfo dir =新しいDirectoryInfo(@" c:\ ");'を試してください。 –

+0

は自分のアプリケーションでは機能しません私のアプリケーションでは私の質問を編集するだけです。 –

答えて

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

あなたは私の唯一のポイントです..これは正しいことをする唯一の方法だと思います ありがとうalot –

+0

あなたは私のポイントを持っている唯一の人です。そう、私はこれが正しいことをする唯一の方法だと思っています ありがとうalot –

+5

@MurHafSoz:あなたを理解できない場合は、自分自身をより明確に説明することを検討すべきです。 –

6

C:はボリューム指定子なので、そのボリュームの現在のパスに変更されます。これはアプリケーションの作業パスになります。

D:そのボリュームの現在のフォルダがrootになっているため、D:rootになります。

+0

をチェックしてください。つまり、ディスク上のパスを指定する 'C:\'を使うべきです。 – linkerro

15

ちょうど"c:"は、 "Cドライブの現在のディレクトリ"を意味しますが、@"c:\"は "Cドライブのルート"を意味します。これは、あなたがCを行う時点で、次の

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

ベース・ディレクトリを使用

0

enter image description here

...コマンドプロンプトから同じように動作します:アプリケーションがそうすることを理解していません。アプリケーションの起動/実行元ディレクトリを返します。

お知らせそのDIR = {。}それはそれは1983年から働いています方法ですので、あなたは

関連する問題