DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

パスからファイル名、拡張子、ディレクトリ名、ルートディレクトリ名等の情報を取得する

Pathクラスを用いることにより、ファイルのパスに関するさまざまな情報を取得することができます。たとえば、パスからファイル名、拡張子なしのファイル名、拡張子、ディレクトリ名、ルートディレクトリ名の取得や、拡張子を変更したときのパスの取得などができます。

パスからファイル名、拡張子などの情報を取得する

まずは、パス文字列からいろいろな情報を取得する例を紹介します。指定するパス文字列のファイル(あるいはフォルダ)は、存在している必要はありません。

VB.NET
コードを隠すコードを選択
'ディレクトリ名の取得
Console.WriteLine( _
    System.IO.Path.GetDirectoryName( _
        "C:\My Documents\My Pictures\サンプル.jpg"))
'結果: C:\My Documents\My Pictures

'拡張子の取得
Console.WriteLine( _
    System.IO.Path.GetExtension( _
        "C:\My Documents\My Pictures\サンプル.jpg"))
'結果: .jpg

'ファイル名の取得
Console.WriteLine( _
    System.IO.Path.GetFileName( _
        "C:\My Documents\My Pictures\サンプル.jpg"))
'結果: サンプル.jpg

'ファイル名(拡張子なし)の取得
Console.WriteLine _
    (System.IO.Path.GetFileNameWithoutExtension( _
        "C:\My Documents\My Pictures\サンプル.jpg"))
'結果: サンプル

'ルートディレクトリ名の取得
Console.WriteLine( _
    System.IO.Path.GetPathRoot( _
        "C:\My Documents\My Pictures\サンプル.jpg"))
'結果: C:\
C#
コードを隠すコードを選択
//ディレクトリ名の取得
Console.WriteLine(
    System.IO.Path.GetDirectoryName(
        @"C:\My Documents\My Pictures\サンプル.jpg"));
//結果: C:\My Documents\My Pictures

//拡張子の取得
Console.WriteLine(
    System.IO.Path.GetExtension(
        @"C:\My Documents\My Pictures\サンプル.jpg"));
//結果: .jpg

//ファイル名の取得
Console.WriteLine(
    System.IO.Path.GetFileName(
        @"C:\My Documents\My Pictures\サンプル.jpg"));
//結果: サンプル.jpg

//ファイル名(拡張子なし)の取得
Console.WriteLine
    (System.IO.Path.GetFileNameWithoutExtension(
        @"C:\My Documents\My Pictures\サンプル.jpg"));
//結果: サンプル

//ルートディレクトリ名の取得
Console.WriteLine(
    System.IO.Path.GetPathRoot(
        @"C:\My Documents\My Pictures\サンプル.jpg"));
//結果: C:\

Pathクラスのメソッドと、パラメータにいろいろな値を指定した時の結果を表にまとめると、次のようになります。「説明」の次の項目の「C:\dir\sub\f.txt」からが、パラメータとその結果です。Pathクラスのメソッドだけでなく、参考として最後にDirectoryクラスのメソッドも入れておきました。なおカレントディレクトリは"C:\cd"とします。

メソッド 説明 C:\dir\sub\f.txt C:\dir\sub\ C:\dir\sub .\sub\f. \\pc\s\dir\f.txt
GetDirectoryName ディレクトリ名の取得 C:\dir\sub C:\dir\sub C:\dir .\sub \\pc\s\dir
GetExtension 拡張子の取得 .txt .txt
GetFileName ファイル名の取得 f.txt sub f. f.txt
GetFileNameWithoutExtension ファイル名(拡張子なし)の取得 f sub f f
GetPathRoot ルートディレクトリ名の取得 C:\ C:\ C:\ \\pc\s
GetFullPath 絶対パスの取得 C:\dir\sub\f.txt C:\dir\sub\ C:\dir\sub C:\cd\sub\f \\pc\s\dir\f.txt
HasExtension 拡張子を持っているか True False False False True
IsPathRooted ルートが含まれているか(詳細 True True True False True
Directory.GetDirectoryRoot ボリューム、ルート情報の取得 C:\ C:\ C:\ C:\ \\pc\s
Directory.GetParent 親ディレクトリの取得 C:\dir\sub C:\dir\sub C:\dir C:\cd\sub \\pc\s\dir

拡張子を変更する

この章の内容は、「ファイルの拡張子を変更する」に移動しました。

パス名を結合する

この章の内容は、「フォルダ名とファイル名を結合して絶対パスを作成する、Path.Combineメソッドの注意点」に移動しました。

  • 履歴:
  • 2006/11/20 表を追加。
  • 2010/9/17 表の項目を増やした。「拡張子を変更する」と「パス名を結合する」のサンプルを変更。
  • 2013/6/1 「拡張子を変更する」と「パス名を結合する」を別のページに移動。
  • 2016/5/14 IsPathRootedの説明を変更。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • Windows Vista以降でUACが有効になっていると、ファイルへの書き込みに失敗する可能性があります。詳しくは、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。