プログラマーを職業としてます。 Flex,Air,C#,Oracle,PHPの言語ノウハウを中心に情報発信していきます


[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”」となります。

変換してしまうと、パスが何なのかもわからなくなるので、よほど必要でない限りはやめたほうがいいですね。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です