.NET TIPS 8.3形式の短いパスを長いパスに変換するには?[2.0のみ、C#、VB]デジタルアドバンテージ 一色 政彦2007/09/27 |
![]() |
Windows OS以前のMS-DOSシステムでは、フォルダやファイルの名前に8.3形式の短い名前しか利用できなかった。8.3形式とは、(「.」より前の)ファイル・ベース名部分が最大で8文字、(「.」以降の)ファイル拡張子部分が最大3文字で構成する、フォルダ/ファイル名の命名規則のことだ。
現在のWindows OSでも、一部、8.3形式の命名規則が用いられている個所(例えば、レジストリの値など)が存在し、そのような場合には既存のパスに対して自動生成された、8.3形式の短い形式のパスを使用する必要がある。
長い形式のパスと短い形式のパスは例えば次のようなものだ。
- 長い形式のパス:C:\Program Files\Mozilla Firefox\FIREFOX.EXE
- 短い形式のパス:C:\PROGRA~1\MOZILL~1\FIREFOX.EXE
この例では、「Program File」は「PROGRA~1」に、「Mozilla Firefox」は「MOZILL~1」に(8文字に)縮められている。
もちろん短い形式のパスでもあっても通常どおりファイルやディレクトリにアクセスできるのだが、例えばそれをユーザーに表示する場合には長い形式の方が分かりやすい。
そこで本TIPSでは、8.3形式の短いパスを長いパスに変換する方法について解説する(※ただし本稿の方法は、.NET Framework 2.0以降にしか対応していない。1.xで同じ内容を実現するには、Win32 APIのGetLongPathName関数を利用する方法などがある)。
短い8.3形式のパスを長い形式のパスに変換する方法
短いパスを長いパスに変換する方法は、.NET Frameworkが提供するメソッドを単に呼び出すだけだ。具体的には、Pathクラス(System.IO名前空間)の静的メソッドGetFullPathを呼び出せばよい。このメソッドは、第1パラメータに短いパスを受け取り、戻り値で長いパスを返す(いずれも文字列型)(※GetFullPathメソッドは.NET Framework 1.xから存在するが、本来、相対パスなどから絶対パスを求めるためのもので、本稿で示すような目的では利用できなかった)。
以上の処理を実装したコード例を次に示す。
|
||
| 短いパスを長いパスに変換するコンソール・アプリケーションのサンプル・プログラム(上:C#、下:VB) |
後日、逆に長いパスから短いパスに変換する方法についても紹介する予定だ。![]()
| 利用可能バージョン:.NET Framework 2.0のみ カテゴリ:クラス・ライブラリ 処理対象:パス 使用ライブラリ:Pathクラス(System.IO名前空間) |
|
||||||||||||||||||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


