C#でファイルの配置されているフォルダー(ディレクトリ)を取得する方法について紹介します。
ファイルのフォルダー(ディレクトリ)を取得するには、System.IO名前空間のFileInfoクラスのDirectoryプロパティを使用するか、DirectoryNameプロパティなどを使用します。
目次
FileInfoクラスのDirectoryプロパティで取得
FileInfoクラスのDirectoryプロパティの構文は次のようになります。
1 |
public System.IO.DirectoryInfo Directory { get; } |
Directoryプロパティは戻り値にDirectoryInfoクラスを返します。
FileInfo.Directoryプロパティの使用例
以下にDirectoryプロパティの使用例を示します。
1 2 3 4 5 6 7 8 |
// ディレクトリパス string path = @"C:\Test\Folder\File.txt"; // FileInfoのインスタンスを生成する FileInfo fileInfo = new FileInfo(path); // フォルダー(ディレクトリ)を取得する DirectoryInfo directoryInfo = fileInfo.Directory; Console.WriteLine(directoryInfo.FullName); |
FileInfoクラスDirectoryNameプロパティで取得
FileInfoクラスのDirectoryNameプロパティの構文は次のようになります。
1 |
public string DirectoryName { get; } |
DirectoryNameプロパティは戻り値にフォルダ―(ディレクトリ)の名前(パス)を文字列で返します。
FileInfo.DirectoryNameプロパティの使用例
以下にDirectoryNameプロパティの使用例を示します。
1 2 3 4 5 6 7 8 |
// ディレクトリパス string path = @"C:\Test\Folder\File.txt"; // FileInfoのインスタンスを生成する FileInfo fileInfo = new FileInfo(path); // フォルダー名(ディレクトリ名)を取得する string directoryName = fileInfo.DirectoryName; Console.WriteLine(directoryName); |
FileInfoクラスのDirectoryプロパティ、およびFileInfoクラスDirectoryNameプロパティは、指定したファイルが存在していない場合でもフォルダー(ディレクトリ)の情報を返します。
サンプルプログラム
Windowsフォームアプリケーションでのプログラムの実装例を記載します。
ユーザーインターフェース
フォームのインターフェースは次のようにします。
「…」ボタン(button1)をクリックすると、ファイルを開くダイアログを表示して、ファイルパスをテキストボックス(textBox1)に設定できるようにします。
「button2」ボタンをクリックするとFileInfoクラスのExistsプロパティを参照して、テキストボックスに入力されているパスのファイルが存在するかどうかを確認して結果を表示します。
「button3」ボタンをクリックするとFileクラスのExists静的メソッドを呼び出して、テキストボックスに入力されているパスのファイルが存在するかどうかを確認して結果を表示します。
ソースコード
サンプルプログラムのフォームには次のようなソースコードを記述します。
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
using System; using System.Windows.Forms; // System.IOのusingを追加 using System.IO; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // ファイルの参照 private void button1_Click(object sender, EventArgs e) { try { // ファイルを開くダイアログボックスのインスタンスを生成 using (OpenFileDialog dialog = new OpenFileDialog()) { // テキストボックスからファイルパスを取得 string path = textBox1.Text; if (!string.IsNullOrEmpty(path)) { // FileInfoオブジェクトを生成 FileInfo fileInfo = new FileInfo(path); // ディレクトリパスを取得 string directoryName = fileInfo.DirectoryName; // ディレクトリが存在するかどうかを確認 if (Directory.Exists(directoryName)) { // ディレクトリが存在する場合は // ファイルを開くダイアログボックスの初期ディレクトリに設定 dialog.InitialDirectory = directoryName; } } // ダイアログボックスを表示 if (dialog.ShowDialog(this) == DialogResult.Cancel) { // キャンセル時は終了 return; } // 指定されたファイルパスをテキストボックスに設定 textBox1.Text = dialog.FileName; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } // FileInfoクラスのDirectoryプロパティでフォルダー(ディレクトリ)を取得 private void button2_Click(object sender, EventArgs e) { try { // テキストボックスからファイルパスを取得 string path = textBox1.Text; // FileInfoオブジェクトを生成 FileInfo fileInfo = new FileInfo(path); // ファイルの存在確認 if (!fileInfo.Exists) { throw new ApplicationException($"{path} が見つかりませんでした。"); } // ディレクトリ情報を取得 DirectoryInfo directoryInfo = fileInfo.Directory; // ディレクトリ名(フォルダーのパス)を表示 MessageBox.Show(directoryInfo.FullName); } catch (Exception ex) { MessageBox.Show(ex.Message); } } // FileInfoクラスのDirectoryプロパティでフォルダー(ディレクトリ)を取得 private void button3_Click(object sender, EventArgs e) { try { // テキストボックスからファイルパスを取得 string path = textBox1.Text; // FileInfoオブジェクトを生成 FileInfo fileInfo = new FileInfo(path); // ファイルの存在確認 if (!fileInfo.Exists) { throw new ApplicationException($"{path} が見つかりませんでした。"); } // ディレクトリ名(フォルダーのパス)を取得 string directoryName = fileInfo.DirectoryName; // ディレクトリ名(フォルダーのパス)を表示 MessageBox.Show(directoryName); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } |
サンプルの実行
作成したプログラムを実行します。
「C:\Test\TestFolder」フォルダーを作成します。
「C:\Test\TestFolder」フォルダーに「TestFile.txt」ファイルを作成します。
ファイルのテキストボックスに「C:\Test\TestFolder\TestFile.txt」を入力するか、「…」ボタンをクリックして「C:\Test\TestFolder\TestFile.txt」を選択します。
「button2」または「button3」をクリックします。
フォルダー(ディレクトリ)が取得されてパスが表示されます。