2015/12/01

.NETのPathTooLongExceptionを克服する

.NET Frameworkのファイルを扱うSystem.IO辺りのクラスのメソッドは、過去の経緯(Windows 9x系をサポートする.NET Framework 1.1からの正常進化のため?)により、MAX_PATH(260)バイト以上のファイルパスが扱えません。

これ、ファイラーや、ファイルを扱うツールとしては、致命的なんじゃないだろうか?
今時の大容量なハードディスクにファイルを保存すると、階層が深くなりがちだし。音楽ファイルなんて、データフォルダパス>ジャンル>アーティスト名>アルバム名>タイトル名なパスになるし。

Microsoftは、.NET Frameworkの中身を、UNICODEバージョンのAPIをコールするように書き換えるべき。 というニーズを汲み取ったライブラリが実は存在します。
AlphaFS

これをプロジェクトからの参照設定に加えるだけで、System.IO以下のクラス・メソッド類を置き換えることができるようになります。
VBなら、Importsをコンパイルスイッチで切り替えてやれば。

#If UseAlphFS Then
Imports Alphaleonis.Win32.Filesystem
#Else
Imports System.IO
#End If

こんな感じで。