2

var fileOpen = new OpenFileDialog(); var clickedOk = fileOpen.ShowDialog(); if (!((bool) clickedOk)) return;

var path = fileOpen.FileName;
var diPath = new DirectoryInfo(path);
var fiPath = new FileInfo(path);

Debug.WriteLine(diPath.Exists);

この場合、なぜ diPath.Exists が false なのか疑問に思っています。ユーザーがファイルを選択したため、ディレクトリが存在する必要があります!? そしてそれは...

Directory.Exists(fiPath.DirectoryName)使用して回避策を使用しましたが、上記が機能しないのは奇妙に思えます。また、存在することがわかっているものを確認するためだけに他の var が必要で、diPath を使用できるはずであることに少しイライラします。どうしたんだ?

また、関連する問題として、ディレクトリ C:\random\spot\here のディレクトリ情報があるとします。なぜその文字列「C:\random\spot\here」を取得する方法がないのですか? 」または「ここ」に名前を付けます。多分私は何かを逃した。

ありがとう、

4

2 に答える 2

6

というファイルはありますが、パスというディレクトリpathありません。

var diPath = new DirectoryInfo(Path.GetDirectoryName(path));

おそらくあなたが望むものです。

于 2010-03-11T00:49:54.503 に答える
1

「パス」にファイル名を含めると、パスはディレクトリ(ブランチノード)ではなく、リーフノード(つまりファイル)になります。Windowsのファイル/パスの処理は、これらの種類のものについては非常に文字通りです。

前述のように、DirectoryInfoまたはPath.GetDirectoryName()は、パスを操作する場合に使用したいものです。

于 2010-03-11T01:00:02.907 に答える