C#でディレクトリ(フォルダー)の親のディレクトリを取得する方法について紹介します。
ディレクトリの親ディレクトリを取得するには、System.IO名前空間のDirectoryInfoクラスのParentプロパティを使用するか、DirectoryクラスのGetParent静的メソッドなどを使用します。
目次
DirectoryInfoクラスのParentプロパティで取得
DirectoryInfoクラスのParentプロパティの構文は次のようになります。
1 |
public System.IO.DirectoryInfo Parent { get; } |
DirectoryInfo.Parentプロパティの使用例
以下にParentプロパティの使用例を示します。
1 2 3 4 5 6 7 |
// ディレクトリパス string path = @"C:\Test\ParentDir\ChildDir"; // DirectoryInfoのインスタンスを生成する DirectoryInfo di = new DirectoryInfo(path); // 親のディレクトリを取得する DirectoryInfo diParent = di.Parent; Console.WriteLine(diParent.FullName); |
DirectoryクラスのGetParent静的メソッドで取得
DirectoryクラスのGetParent静的メソッドの構文は次のようになります。
1 |
public static System.IO.DirectoryInfo GetParent (string path); |
DirectoryクラスのGetParent静的メソッドには引数に存在を確認するディレクトリのパスを指定します。
Directory.GetParent静的メソッドの使用例
以下にGetParent静的メソッドの使用例を示します。
1 2 3 4 5 |
// ディレクトリパス string path = @"C:\Test\ParentDir\ChildDir"; // 親のディレクトリを取得する DirectoryInfo diParent = Directory.GetParent(path); Console.WriteLine(diParent.FullName); |
DirectoryInfoクラスのParentプロパティ、およびDirectoryクラスのGetParent静的メソッドは、指定したディレクトリに親のディレクトリがない場合(例えばCドライブ「C:\」を指定した場合)にはnullを返します。
サンプルプログラム
Windowsフォームアプリケーションでのプログラムの実装例を記載します。
ユーザーインターフェース
フォームのインターフェースは次のようにします。
ソースコード
サンプルプログラムのフォームには次のようなソースコードを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
using System; using System.Windows.Forms; // System.IOのusingを追加 using System.IO; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // DirectoryInfoクラスのParentプロパティで親のディレクトリを取得 private void button1_Click(object sender, EventArgs e) { try { // ディレクトリパス string path = textBox1.Text; // DirectoryInfoのインスタンスを生成 DirectoryInfo di = new DirectoryInfo(path); // 親ディレクトリを取得 DirectoryInfo diParent = di.Parent; // 親ディレクトリのパスをメッセージボックスに表示 MessageBox.Show(diParent.FullName); } catch (Exception ex) { MessageBox.Show(ex.Message); } } // DirectoryクラスのGetParent静的メソッドで親のディレクトリを取得 private void button2_Click(object sender, EventArgs e) { try { // ディレクトリパス string path = textBox1.Text; // 親ディレクトリを取得 DirectoryInfo diParent = Directory.GetParent(path); // 親ディレクトリのパスをメッセージボックスに表示 MessageBox.Show(diParent.FullName); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } |
サンプルの実行
作成したプログラムを実行します。
[button1]がDirectoryInfoクラスのParentプロパティで親のディレクトリを取得します。
[button2]がDirectoryクラスのGetParent静的メソッドで指定したパスの親のディレクトリを取得します。
Cドライブに[Test] > [ParentDir] > [ChildDir]の順にフォルダーを作成します。
パスのテキストボックスに「C:\Test\ParentDir\ChildDir」を入力します。
[button1]をクリックします。
親ディレクトリが取得されてパスが表示されます。
[button2]をクリックします。
同様に親ディレクトリのパスが表示されます。
参考記事
指定したディレクトリ内のディレクトリを取得する方法については、以下の記事をご参照ください。