DirectoryInfo

同一のディレクトリに複数の処理をする場合には、DirectoryよりDirectoryInfoのメソッドを呼ぶようにすることで、パスに対するセキュリティ チェックを一度だけにできます。Remarks - DirectoryInfo Class (System.IO) | Microsoft Learn

コンストラクタ

public DirectoryInfo (string path);
DirectoryInfo(String) コンストラクター (System.IO) | Microsoft Learn

プロパティ

FileInfo同様に初回の読み取り時に情報がキャッシュされるため、Refresh()の呼び出しが必要な場合があります。

プロパティ 説明
bool Exists  
string Name ディレクトリの名前だけ。DirectoryInfoインスタンスの名前
string FullName ディレクトリの絶対パス
DirectoryInfo Root ディレクトリのルート部分
DirectoryInfo Parent 親ディレクトリ
     
// 絶対パス
DirectoryInfo dirA = new DirectoryInfo("c:\\a\\b\\");

string str1A = dirA.Name;           // "b"
string str2A = dirA.FullName;       // "c:\\a\\b\\"
string str3A = dirA.ToString();     // "c:\\a\\b\\"

DirectoryInfo info1A = dirA.Root;   // {c:\}
DirectoryInfo info2A = dirA.Parent; // {a}

// 相対パス
DirectoryInfo dirB = new DirectoryInfo("a\\b\\");
string str1B = dirB.Name;           // "b"
string str2B = dirB.FullName;       // "C:\\Projects\\test\\bin\\Debug\\a\\b\\"
string str3B = dirB.ToString();     // "a\\b\\"

// 絶対パス。末尾に'\'なし
DirectoryInfo dirC = new DirectoryInfo("c:\\a\\b");
string str1C = dirC.Name;           // "b"
string str2C = dirC.FullName;       // "c:\\a\\b"

メソッド

内部的な処理はDirectoryと共通のため、処理内容や注意点は同じです。

戻り値の型 メソッド 機能
FileInfo[] GetFiles() ディレクトリ内のすべてのファイルを表す、FileInfoを取得できる
DirectoryInfo[] GetDirectories() ディレクトリ内のすべてのサブディレクトリを表す、DirectoryInfoを取得できる
FileSystemInfo[] GetFileSystemInfos() ディレクトリ内のすべてのファイルとサブディレクトリを表す、FileSystemInfoを取得できる
IEnumerable<FileInfo> EnumerateFiles()  
IEnumerable<DirectoryInfo> EnumerateDirectories()  
IEnumerable<FileSystemInfo> EnumerateFileSystemInfos()  
void Refresh() オブジェクトの状態を更新する
     

Create()

ディレクトリを作成できます。

public void Create ();
Create() - DirectoryInfo.Create メソッド (System.IO) | Microsoft Learn

すでにディレクトリが存在するならば、何もされません。

内部的にはパスに対する確認以外は、Directory.CreateDirectory()を呼ぶことと同じです。 Create - directoryinfo.cs CreateDirectory - directory.cs

Delete()

ディレクトリを削除できます。

削除の処理自体は、Directory.Delete()を呼ぶことと同じです。 Delete - directoryinfo.cs Delete - directory.cs

GetFiles()

ディレクトリ内のすべてのファイルを表す、FileInfoを取得できます。

public System.IO.FileInfo[] GetFiles ();
GetFiles() - DirectoryInfo.GetFiles メソッド (System.IO) | Microsoft Learn

結果はキャッシュされず、呼び出し時の情報が返されます。

DirectoryInfo directory = new DirectoryInfo(path);
FileInfo[] f1 = directory.GetFiles();
// ファイルを修正、追加
FileInfo[] f2 = directory.GetFiles(); // 変更が反映される

EnumerateFiles()

ディレクトリ内のファイル情報の、列挙可能 (Enumerable) なコレクションを取得できます。

返されるコレクションはキャッシュされず、コレクションのGetEnumerator()を呼ぶたびに列挙されます。EnumerateFiles() - DirectoryInfo.EnumerateFiles Method (System.IO) | Microsoft Learn

DirectoryInfo directory = new DirectoryInfo(path);

IEnumerable<FileInfo> e = directory.EnumerateFiles();
FileInfo[] f1 = e.ToArray();
// ファイルを修正、追加
FileInfo[] f2 = e.ToArray(); // 変更が反映される
Microsoft Learnから検索