1

enumerateファイルを使用して、ディレクトリ内のすべてのファイルを一覧表示しています。不正な文字を含むファイル名が見つかった場合に例外をスローし、ファイルをリストしているforeachループを停止します。 foreachループは、例外にもかかわらずファイル名をリスト表示し続けることができますか?何か案は?エラー:パスに無効な文字があります

コード:

try { 

DirectoryInfo directory = new DirectoryInfo(targetPath); 
IEnumerable<FileInfo> allfiles = directory.EnumerateFiles("*.*", SearchOption.AllDirectories); 

foreach (FileInfo file in allfiles) 
{ 
    Console.WriteLine(file.Name); 
} 

} 
catch (ArgumentException o) 
{ 
    Console.WriteLine("Error: {0}", o.Message); 
} 
+0

コードを投稿してください –

+0

あなたのHDDに保存されている無効な文字を含むファイルがありますか?とにかく...何かを試してみてください(試してみてください、試してみてください、誰かが知っています!) – gbianchi

+0

私のdownloadfolderと、さまざまなコーディング言語のサンプルプロジェクトがたくさんあります。それらの無数のフォルダの一つ。私はまだこれを回避する方法を見つけなければならない。 @BrianRasmussen Iveはコードを更新しました。 –

答えて

2

あなたはforeachループの周りにtryキャッチを持っています。つまり、ループ内のいずれかの呼び出しが失敗した場合、コードはループの残りの部分を中止します。

変更するには、このようなものにするためのコード:

foreach (FileInfo file in allfiles) 
{ 
    try 
    { 
     Console.WriteLine(file.Name); 
    } 
    catch (ArgumentException o) 
    { 
     Console.WriteLine("Error: {0}", o.Message); 
    } 
} 

あなたはまだエラーをスローした場合にEnumerateFiles周りのキャッチ...試してみる必要があります。

+0

なぜ 'try/catch'を' Console.WriteLine'の周りに動かすのか分かりません...? 'Console.WriteLine'が例外を投げていると思いますか? IEnumerable.Current'または 'IEnumerable.MoveNext'がここに投げかけている可能性が高いと思われます... –

+0

ありがとうございます:)それは今完璧に動作します! –

+0

@ChrisFそして、何らかの理由で例外をスローしていたのはConsole.WriteLineでした。 –

関連する問題