0

上記の方法を使用していますが、上記の例外が発生します。
ディレクトリ名に不正な文字は見当たりません (期待どおりに結果を返す他のディレクトリがあります)。メソッドで失敗した同じディレクトリで
静的を呼び出すと、問題はなく、メソッドは期待どおりに戻ります。 この不正行為の原因は何ですか?Directory.GetFiles(String, String, SearchOption)DirectoryInfo

4

2 に答える 2

1

Mac で (ネットワーク共有を介して) ディレクトリをスキャンしているときに、この問題に遭遇しました。

DirectoryInfo.GetFiles(@"//macbook/sharedfolder")

どうやら、Mac では <,>,? ファイル名に含まれていますが、Windowsではそうではありません。

ディレクトリ内のファイル名の 1 つに無効な文字が含まれていると、この「不正な文字」エラーが発生しました。

于 2013-07-10T18:26:02.273 に答える
1

msdnに記載されているように、 anArgumentExceptionが発生するのは

searchPattern には、GetInvalidPathChars メソッドによって定義された 1 つ以上の無効な文字が含まれています。

(searchPatternはメソッドの最初の String 引数です)。

これをテストするには、試してみてください

var invalidChars = <yourSearchPattern>.Select(x => x).Intersect(Path.GetInvalidPathChars()).ToList();

invalidChars に何かが見つかれば、問題の原因が見つかります。

編集

Directory.GetFiles()で動作するのはなぜですか? 私は理解していないことを認めなければなりません。

あんArgumentExceptionが上がる

最初の引数 ( path) に無効な文字 (またはIsNullOrWhiteSpace) がある場合、または

2 番目の引数 ( searchPattern)の場合

有効なパターンが含まれていません

そして、有効なパターンは

このパラメーターは、2 つのピリオド ("..") で終わることも、2 つのピリオド ("..") の後に DirectorySeparatorChar または AltDirectorySeparatorChar を含めることも、InvalidPathChars の文字を含めることもできません。

InvalidPathChars(時代遅れ)と同じ結果が得られるため、GetInvalidPathChars()少なくとも.net 4.5では、行き詰まっていることを認めなければなりません。

異なるバージョンの .net を使用できますが、両者に違いはありますか?

于 2013-07-04T15:07:04.663 に答える