文字列「D:\test\...」がメソッドに渡されると、マシンSystem.IO.Directory.Exists
に返さTrue
れます。次のコードを確認しました。
public static void Main(string[] args)
{
if (Directory.Exists("D:\\test\\..."))
Console.WriteLine("Directory exist."); //Control gets here
else
Console.WriteLine("Does not exist.");
}
これは、指定した場所に「...」(3 つのドット) という名前のディレクトリが存在しない場合でも発生します。
これをさらに調査すると、文字列の最後の部分を完全に無視して、内部的に「D:」のみをチェックしていることがわかります。親ディレクトリが存在するため、true を返しています。
末尾のドットを切り落とさずに確認する方法があるかどうか知りたいですか?
Directory.Exists
メソッドの結果が予想と異なる可能性があるシナリオはありますか?
更新: Windows エクスプローラーのアドレス バーに同じ文字列 "D:\test\..." を入力して Enter キーを押すと、そのようなディレクトリが見つからないことを識別できます。同様の動作を得る方法はありますか?
注: そのような名前のディレクトリが存在しないことはわかっていますが、ユーザーから入力文字列を取得しているため、このメソッドへの入力は何でもかまいません。