いくつかのディレクトリでいくつかのファイルを検索するアプリケーションを作成しました。ディレクトリが存在しない場合は、DirectoryNotFoundException
がスローされます。私はその例外をキャッチしますが、DirectoryName
のプロパティや、FileNotFoundException
(FileName)のようなものはありません。例外プロパティからディレクトリ名を見つけるにはどうすればよいですか?C#DirectoryNotFoundExceptionからディレクトリ名を取得
答えて
これをネイティブに行う方法はありません。
どこかにあなたのプロジェクトにこのクラスを追加します。ほとんどのディレクトリからスローDirectoryNotFoundExceptionのメッセージメンバーの形式を
catch (DirectoryNotFoundException dnfe)
{
Console.WriteLine(dnfe.GetPath());
}
ありがとうございます! – Sp3ct3R
私の場合、二重引用符を探す必要がありました:ex.Message.Split(new [] {'"'、 '\' '}))[1] – user1027167
FileNotFoundException
にファイル名がありますが、DirectoryNotFoundException
にはディレクトリ名がありませんか?
回避策:例外をスローする前に、例外のData
プロパティを使用して、間違ったディレクトリ名を関連付けます。それはDirectory.Exists
チェックすぐにあなたは、ディレクトリ内のファイルを検索する変数にディレクトリの名前を保存しようとする前に。その後、そのディレクトリを参照するコードのtryブロックを開始します。そのコードブロックがスローされると、ディレクトリ名を使用できるようになりました。例えば
:あなただけのIDEにこの1個のバグを踏みつけるするために探している場合
// ... somewhere in some method that's about to search a directory.
var dirName = directories[i]; // or something -- how do you get it before you pass it to DirectoryInfo?
try
{
SearchDirectory(dirName); // or a block of code that does the work
}
catch(Exception e)
{
// at this point, you know dirName. You can log it, add it to a list of erroring
// directories, or whatever. You could throw here, or swallow the error after logging it, etc.
}
コードに含まれていない場合はどうなりますか?彼がディレクトリを使用しようとしているなら、彼はすでにディレクトリ名を持っている可能性が高いので、最初は疑問点です。 –
で最初に存在する
、その後、あなたはこれをやって試すことができます:
Visual Studioで、Debug -> Exceptions
に行き、その後、確認してくださいボックスCommon Language Runtime Exceptions
です。これは、捕まえるのを待つのではなく、例外が発生したときにあなたに権利を持ち帰ります。
ハックのようですが、Message
のプロパティからパスを抽出できます。私にとっては、最初にDirectory.Exists
メソッドを使用してディレクトリの存在をチェックすることをお勧めします。
catch (DirectoryNotFoundException e) {
//Result will be: Could not find a part of the path "C:\incorrect\path".
Console.WriteLine(e.Message);
//Result will be: C:\incorrect\path
Console.WriteLine(e.Message.Replace("Could not find a part of the path \"","").Replace("\".",""));
}
http://msdn.microsoft.com/en-us/library/system.io.directorynotfoundexception.aspxによると、実際にはパスが 'Message'プロパティに現れるようです。 – BinaryTox1n
+1 - アプリケーションを別のカルチャで実行していると失敗するため、これをハックと呼びます。しかし、これは文化があらかじめ分かっているあらゆる場面で良い解決策になるでしょう。 (Directory.Existsのチェックは悪いハックです。これは何らかの事情で失敗する可能性があるため、同じ問題に対して2つの異なるエラー条件があることを意味します)。 –
一般的に、例外を記録する適切な方法は、そのメッセージに加えて、メッセージとその他の有用な情報を含む 'Exception.ToString()'を呼び出すことによって、 –
:例外
public static class DirectoryNotFoundExceptionExtentions
{
public static string GetPath(this DirectoryNotFoundException dnfe)
{
System.Text.RegularExpressions.Regex pathMatcher = new System.Text.RegularExpressions.Regex(@"[^']+");
return pathMatcher.Matches(dnfe.Message)[1].Value;
}
}
キャッチをし、このようなタイプの拡張機能を使用します"ディレクトリ '入力'が見つかりませんでした。"この文字列から入力を抽出するのは難しいことではありません。
質問あなたは、その正確なパラメータでメソッドを呼び出すのであれば、例外から入力パラメータを取得する必要があるのはなぜですか?
古い記事を掘り下げて申し訳ありませんが、FileNotFoundExceptionがそうであればDirectoryNotFoundExceptionがプロパティとしてディレクトリを持っていないというのは、
私は.NETの機能要求としてそれを入れてきました:ディレクトリは、あなたがDirectoryNotFoundExceptionを得た場合、あなたは確かに場合ディレクトリ名を見つけるつもりされていない存在しない
- 1. ディレクトリからファイル名を取得KSH Unix
- 2. ディレクトリからファイル名を取得する方法はC#にありますか?
- 3. C#でwinevtディレクトリにアクセスするとDirectoryNotFoundExceptionがスローされる
- 4. Java - ディレクトリからファイル名を取得する
- 5. SaveFileDialog.FileNameからディレクトリ名のみを取得する方法
- 6. ディレクトリから最新のファイル名を取得するROBOTテストケース
- 7. ディレクトリからすべてのファイル名を取得
- 8. Androidのディレクトリからファイル名を取得する
- 9. ユーザーからvaadinのディレクトリとファイル名を取得する方法
- 10. 私は、パスからディレクトリ名を取得したい
- 11. cのinode値でディレクトリ名を取得する方法は?
- 12. C#のディレクトリからファイルのリストを取得するには
- 13. C#ディレクトリからファイルを取得する方法
- 14. C++ DNSから名前からIPを取得 - LINUX
- 15. Djangoディレクトリのアップロードサブディレクトリ名を取得
- 16. アンドロイド:隠しディレクトリからファイルリストを取得
- 17. パスから子ディレクトリを取得
- 18. ディレクトリのFileDescriptorからファイルを取得
- 19. mavenから$ {basedir}の親ディレクトリを取得
- 20. ディレクトリから画像を取得
- 21. サーバからディレクトリ、サブディレクトリ、ファイルを取得
- 22. bash:サブディレクトリ名が与えられた現在のディレクトリからのパスを取得
- 23. 与えられたディレクトリのファイル名を取得するjQuery
- 24. c#プロジェクト内のディレクトリのパスを取得
- 25. Objective-CでHTTPディレクトリを取得する
- 26. c#アセンブリ実行可能ディレクトリを取得
- 27. C#のネットワークインターフェイス名を取得
- 28. C#のテキストボックスからファイル名を使用してファイルパスを取得
- 29. phpとjavascriptを使ってディレクトリからファイル名を取得するには
- 30. 再帰的スイッチを使用せずにディレクトリからファイル名とファイルサイズを取得
ディレクトリが存在しません。おそらく質問を誤解していますか? – Caimen
@Caimen:どのディレクトリが存在しませんか? – SLaks
見つけようとした名前がありますか? –