none
全て小文字で入力したパスの実際の名前(大文字小文字区別)を取得したい RRS feed

  • 質問

  • いつも助けていただきありがとうございます。

    VisualBasic というより .NET Framework の質問になりますが。。。
    (.NET Framework 3.5 使用)。

    物理ディスクに「C:\Test1\Test2」というフォルダがあり、
    画面から全て小文字で「c:\test1\test2」と入力した時に、
    物理ディスクに実際に定義されている大文字小文字が区別
    されたフォルダ名を取得したいと考えています。

    画面入力値を引数に System.IO.Path.GetFullPath を使った
    のですが、全て小文字のままの値が取れるだけでした。

    System.IO.DirectoryInfo のコンストラクタに画面入力値を
    入れて FullName プロパティを調べた場合も同じでした。

    画面入力したフォルダ内にファイル(やフォルダ)があれば、
    それを System.IO.Directory.GetFiles などで取得して、
    配列要素から System.IO.Path.GetDirectoryName で取得で
    きますが、無駄な走査が行われるので避けたいですし、空
    フォルダの場合に使えない手法です。

    何か簡単で良い方法はないでしょうか?
    よろしくお願いいたします。

    2011年11月24日 3:28

回答

すべての返信

  • .NET Frameworkクラスライブラリにはそのような結果を得るメソッドはなさそうです。Windows APIのGetLongPathNameを呼び出すぐらいでしょうか。
    • 回答としてマーク TrimmerJP 2011年11月24日 9:41
    2011年11月24日 4:36
  • 親ディレクトリの GetDirecotryname で自分を検索すればとりあえず自分の名前のところだけは正しい名前になるので、これをルートから再帰的にやってやれば・・・。
    var dirpath = "c:\\windows";
    var dirpath2 = Directory.GetDirectories(Path.GetDirectoryName(dirpath), Path.GetFileName(dirpath))[0];
    あまりかっこよくないですね・・・。
    2011年11月24日 5:13
  • 佐祐理さま、ありがとうございます。
    すばらしいですね。おかげさまで望みどおりの動きをさせることができました。感謝いたします。


    galacoさま、ありがとうございます。
    今回は佐祐理さまの回答を採用とさせていただきます。

    2011年11月24日 9:44