DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォルダの名前だけ

  • 題名: フォルダの名前だけ
  • 著者: カッコウ
  • 日時: 2005/10/26 20:41:40
  • ID: 13493
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[WindowsXP][C#][.NET Framework1.1]
分類:[.NET]

いつもお世話になっています。よろしくお願いします。

どぼんさんのTIPSを例にさせてもらいます。
Console.WriteLine(
System.IO.Path.GetDirectoryName(
@"C:\My Documents\My Pictures\サンプル.jpg"));
これだと次のようなパスになってしまいます。
C:\My Documents\My Pictures
そこで「My Pictures」この部分だけをとりたいのですが
どのようにすればいいでしょうか?
Splitも考えたのですが、どの配列に入っているか判断できなくて断念しました。

http://dobon.net/vb/dotnet/file/pathclass.html

分かるかた教えてください。よろしくお願いします。
お世話になります。

■No13493に返信(カッコウさんの記事)
> そこで「My Pictures」この部分だけをとりたいのですが
> どのようにすればいいでしょうか?

↓こういうことでしょうか?

String fileName = @"C:\My Documents\My Pictures\サンプル.jpg";
directoryName = System.IO.Path.GetDirectoryName(fileName);
String directories() = directoryName.Split("\".ToCharArray());
String lastDirectory = directories(directories.Length - 1);

Console.WriteLine("lastDirectory('{0}')", lastDirectory);
  • 題名: Re[2]: フォルダの名前だけ
  • 著者: カッコウ
  • 日時: 2005/10/26 21:43:30
  • ID: 13495
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
2005/10/26(Wed) 21:43:42 編集(投稿者)

なおこさんご返答ありがとうございます。

> String lastDirectory = directories(directories.Length - 1);

このような方法がありました。
参考になります。
ありがとうございました。
解決済み!
こんにちは、じゃんぬ です。

■No13494に返信(なおこ(・∀・)さんの記事)
> String fileName = @"C:\My Documents\My Pictures\サンプル.jpg";
> directoryName = System.IO.Path.GetDirectoryName(fileName);
> String directories() = directoryName.Split("\".ToCharArray());
> String lastDirectory = directories(directories.Length - 1);
>         
> Console.WriteLine("lastDirectory('{0}')", lastDirectory);

パス区切り文字が「\」決め打ちというのは如何なものでしょう?

private static string GetLastDirectoryName(string nFilePath) {
    string nDirPath = System.IO.Path.GetDirectoryName(nFilePath);
    string nDirName = System.IO.Path.GetFileName(nDirPath);

    // <テスト用>
    MessageBox.Show(System.IO.Path.GetFileName(nDirName));
    // </テスト用>

    return nDirName;
}
解決済み!
じゃんぬさんご返答ありがとうございます。

GetFileNameはディレクトリでもよかったのですか。
全然知りませんでした。ありがとうございます。
解決済み!
こんにちは、じゃんぬ です。

■No13518に返信(カッコウさんの記事)
> GetFileNameはディレクトリでもよかったのですか。

メソッド名に捕らわれてしまいがちですが、検証すると以下のことがわかります。
GetFileName は最終のパス区切り文字から後の文字列を取得しているだけ。
なので、ファイル パスは存在していなくても良いわけです。

ただ、パス区切り文字の処理を .NET Framework にお任せするというのが利点ではないかと思います。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板