[C#]ショートパス(8.3形式の短いパス)に変換するには
現在のWindowsではフォルダやファイル名の規約は随分緩くなっており、文字数制限も殆ど無いに等しいし、名前に空白が含まれていても問題ないです。
ただ、たまにこの形ではうまく処理できないような場合もあります。
そういった時には、旧タイプのいわゆる8.3形式に変換してやる必要があります。
今時そんなことは必要ないからか、.NET Frameworkには用意されていませんので、APIを使用します。
最初にAPI定義
[DllImport("kernel32.dll")] private static extern int GetShortPathName(string longPath, StringBuilder shortPathBuffer, int bufferSize);
以下の様な感じで使います。
string longPath = @"C:\Documents and Settings\Administrator\UserData\index.dat" ; int bufferSize = 260; StringBuilder shortPathBuffer = new StringBuilder(bufferSize); GetShortPathName(longPath, shortPathBuffer, bufferSize); string shortPath = shortPathBuffer.ToString();
上記の実行結果は「”C:\\DOCUME~1\\ADMINI~1\\UserData\\index.dat”」となります。
変換してしまうと、パスが何なのかもわからなくなるので、よほど必要でない限りはやめたほうがいいですね。
== ランキングに参加しています。ぜひクリックお願いします ==
[C#] ClientSizeはスクロールバーの幅を除外したサイズ! [Access] 1ページ目だけページフッターを表示しないようにする