3

私はそのようないくつかの簡単なコードを持っています...

try
{
    files = root.GetFiles("*.*"); 
    //throws exception filetoolong exception.  Skip file and move
}
catch (UnauthorizedAccessException e)
{
     throw;
}

問題は、ファイル パスが長すぎる場合に例外がスローされる可能性があることです...

System.IO.PathTooLongException は処理されませんでした
Message=指定されたパス、ファイル名、またはその両方が長すぎます。完全修飾ファイル名は 260 文字未満、ディレクトリ名は 248 文字未満である必要があります。
ソース= mscorlib

長いファイルをスキップする方法はありますか?現在、私のプログラムは停止するだけですが、今のところこの例外を回避するにはどうすればよいですか?

4

2 に答える 2

1

例外を回避できる唯一の方法は、MAX_PATH定数に基づく、またはファイルなしで機能する、指定された仕様を超えるファイルを含むフォルダーを列挙しようとしないことです。

私はそれを使用していませんが、AplhaFSを試すことができます-http ://alphafs.codeplex.com/

于 2013-01-16T15:19:22.093 に答える
0

ファイル パスの長さの制限に関する詳細: ファイル、パス、および名前空間の命名 (Windows)

これを回避する方法はいくつかありますが、これらの回避策を使用するには、ファイルパスの長さ > MAX_PATH をサポートする非常に特殊な呼び出しのサブセットに P/Invoke する必要があります。

于 2013-01-16T15:26:49.763 に答える