0

Directory.Exists()フォルダーの存在を確認するために使用していますが、その方法でエラーが発生しました。私のコマンドは次のとおりです。

if (Directory.Exists(myFolder) == false) 
{ 
    MessageBox.Show(myFolder, "Invalid Log Folder path", MessageBoxButtons.OK, MessageBoxIcon.Hand); 
}

if (Directory.Exists(myFolder) == true) 
{ 
     MessageBox.Show(myFolder, "Valid Folder path"); 
}

myFolder の場合はC:\Documents and Settings\UserID\My Documentsを返しますTRUE

myFolder の場合はC:\Documents and Settings\xxx\My Documents返されますFALSE(xxx存在しない場合)。

ただし、 myFolder の場合はC:\\Documents and Settings\UserID\My Documentsも返しますTRUE

の横にある二重の円記号C:は、テストを無効にしたに違いありません。しかし、Directory.Exists()それを認識できません。

それ以上の\場合でも、同じ問題が発生します。

この失敗がどのように発生するのか理解できません。.NET 3.5 で VS2008 を使用しています。

4

1 に答える 1

5

これを試して:

  1. コマンドプロンプトを開く
  2. コマンドを入力しますcd c:\\\\\\\\\

完全に受け入れられることがわかります。

別のテスト:

  1. コマンドプロンプトを開く
  2. 試すcd c:\\\\\\\\\\\\temp

c:\temp ディレクトリがあるとします。

最後の一つ:

  1. コマンドプロンプトを開く
  2. 試すcd c:\\\\\\\\\\\\\inetpub\\\\\\\\\\\\\\\\\\\\\logs

c:\inet\logs ディレクトリにいるとします。

Directory.Exists()メソッドの動作について誤った期待を持っていたようです。

コマンドおよびそれらのメソッドでは、任意の数の '\' が単一の '\' として解釈され、完全に受け入れられる入力です。

于 2012-07-10T22:42:35.863 に答える