259文字より長い名前のファイルを処理するにはどうすればよいですか?
私は、いくつかのディレクトリ内のすべてのファイルをウォークスルーし、それらのファイルに対していくつかのアクションを実行するアプリケーションに取り組んでいます。特に、ファイルサイズとこのファイルが変更された日付を取得する必要があります。 一部のファイルのフルネーム(ディレクトリ+ファイル名)が長すぎるため、(260文字)にFileInfo制限されている.NETFrameworkを使用できませんでしたMAX_PATH。多くのWebソースは、名前が長すぎるファイルにアクセスするために、P / Invokeを介してネイティブのWin32関数を使用することを推奨しています。 現在、Win32関数でもまったく同じ問題が発生しているようです。たとえば、GetFileAttributesEx(kernel32.dll)は、270バイトのパスに対してWin32エラー3ERROR_PATH_NOT_FOUNDで失敗します。 まったく同じファイルをNotepad2から正常に開き、Windowsエクスプローラーで正常に表示できます(ただし、たとえばVisual Studio 2010は、259文字の制限のために開くことができません¹)。 ファイルパスが270文字の場合にファイルにアクセスできるようにするにはどうすればよいですか? ノート: ファイルパスの長さが259文字を超えるファイルを削除または無視することは、解決策ではありません。 Unicode互換のソリューションのみを探しています。 このアプリケーションは、.NET Framework4がインストールされたWindows2008 / Vista以降で実行されます。 ¹驚いたことに、Microsoft Word 2007は失敗し、フロッピードライブがないコンピュータで「フロッピーディスクが小さすぎる」、または4 GBのRAMが残っているときに「RAMメモリが少ない」、または最後に「ウイルス対策ソフトウェア[...]を更新する必要があります」。彼らはいつの日か、少なくともMicrosoft Officeのような主要な製品で、そのようなばかげた意味のないエラーを表示するのをやめますか?