同一のディレクトリに複数の処理をする場合には、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() | オブジェクトの状態を更新する |
ディレクトリを作成できます。
public void Create ();Create() - DirectoryInfo.Create メソッド (System.IO) | Microsoft Learn
すでにディレクトリが存在するならば、何もされません。
内部的にはパスに対する確認以外は、Directory.CreateDirectory()を呼ぶことと同じです。 Create - directoryinfo.cs CreateDirectory - directory.cs
ディレクトリを削除できます。
削除の処理自体は、Directory.Delete()を呼ぶことと同じです。 Delete - directoryinfo.cs Delete - directory.cs
ディレクトリ内のすべてのファイルを表す、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(); // 変更が反映される
ディレクトリ内のファイル情報の、列挙可能 (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(); // 変更が反映される