DirectoryInfo クラス

定義

ディレクトリとサブディレクトリを作成、移動、列挙するためのインスタンス メソッドを公開します。 このクラスは継承できません。

public ref class DirectoryInfo sealed : System::IO::FileSystemInfo
public sealed class DirectoryInfo : System.IO.FileSystemInfo
[System.Serializable]
public sealed class DirectoryInfo : System.IO.FileSystemInfo
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class DirectoryInfo : System.IO.FileSystemInfo
type DirectoryInfo = class
    inherit FileSystemInfo
[<System.Serializable>]
type DirectoryInfo = class
    inherit FileSystemInfo
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type DirectoryInfo = class
    inherit FileSystemInfo
Public NotInheritable Class DirectoryInfo
Inherits FileSystemInfo
継承
DirectoryInfo
継承
属性

次の例では、 DirectoryInfo クラスのメイン メンバーの一部を示します。

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        // Specify the directories you want to manipulate.
        DirectoryInfo di = new DirectoryInfo(@"c:\MyDir");
        try
        {
            // Determine whether the directory exists.
            if (di.Exists)
            {
                // Indicate that the directory already exists.
                Console.WriteLine("That path exists already.");
                return;
            }

            // Try to create the directory.
            di.Create();
            Console.WriteLine("The directory was created successfully.");

            // Delete the directory.
            di.Delete();
            Console.WriteLine("The directory was deleted successfully.");
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
        finally {}
    }
}
open System.IO

// Specify the directories you want to manipulate.
let di = DirectoryInfo @"c:\MyDir"
try
    // Determine whether the directory exists.
    if di.Exists then
        // Indicate that the directory already exists.
        printfn "That path exists already."
    else
        // Try to create the directory.
        di.Create()
        printfn "The directory was created successfully."

        // Delete the directory.
        di.Delete()
        printfn "The directory was deleted successfully."
with e ->
    printfn $"The process failed: {e}"
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        ' Specify the directories you want to manipulate.
        Dim di As DirectoryInfo = New DirectoryInfo("c:\MyDir")
        Try
            ' Determine whether the directory exists.
            If di.Exists Then
                ' Indicate that it already exists.
                Console.WriteLine("That path exists already.")
                Return
            End If

            ' Try to create the directory.
            di.Create()
            Console.WriteLine("The directory was created successfully.")

            ' Delete the directory.
            di.Delete()
            Console.WriteLine("The directory was deleted successfully.")

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

次の例では、ディレクトリとその内容をコピーする方法を示します。

using System;
using System.IO;

class CopyDir
{
    public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
    {
        if (source.FullName.ToLower() == target.FullName.ToLower())
        {
            return;
        }

        // Check if the target directory exists, if not, create it.
        if (!Directory.Exists(target.FullName))
        {
            Directory.CreateDirectory(target.FullName);
        }

        // Copy each file into it's new directory.
        foreach (FileInfo fi in source.GetFiles())
        {
            Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name);
            fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
        }

        // Copy each subdirectory using recursion.
        foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
        {
            DirectoryInfo nextTargetSubDir =
                target.CreateSubdirectory(diSourceSubDir.Name);
            CopyAll(diSourceSubDir, nextTargetSubDir);
        }
    }

    public static void Main()
    {
        string sourceDirectory = @"c:\sourceDirectory";
        string targetDirectory = @"c:\targetDirectory";

        DirectoryInfo diSource = new DirectoryInfo(sourceDirectory);
        DirectoryInfo diTarget = new DirectoryInfo(targetDirectory);

        CopyAll(diSource, diTarget);
    }

    // Output will vary based on the contents of the source directory.
}
open System.IO

let rec copyAll (source: DirectoryInfo) (target: DirectoryInfo) =
    if source.FullName.ToLower() <> target.FullName.ToLower() then
        // Check if the target directory exists, if not, create it.
        if not (Directory.Exists target.FullName) then
            Directory.CreateDirectory target.FullName |> ignore

        // Copy each file into it's new directory.
        for fi in source.GetFiles() do
            printfn $@"Copying {target.FullName}\{fi.Name}"
            fi.CopyTo(Path.Combine(string target, fi.Name), true) |> ignore

        // Copy each subdirectory using recursion.
        for diSourceSubDir in source.GetDirectories() do
            target.CreateSubdirectory diSourceSubDir.Name
            |> copyAll diSourceSubDir

let sourceDirectory = @"c:\sourceDirectory"
let targetDirectory = @"c:\targetDirectory"

let diSource = DirectoryInfo sourceDirectory
let diTarget = DirectoryInfo targetDirectory

copyAll diSource diTarget

// Output will vary based on the contents of the source directory.
Imports System.IO

Class CopyDir
    Shared Sub CopyAll(ByVal source As DirectoryInfo, ByVal target As DirectoryInfo)
        If (source.FullName.ToLower() = target.FullName.ToLower()) Then
            Return
        End If

        ' Check if the target directory exists, if not, create it.
        If Directory.Exists(target.FullName) = False Then
            Directory.CreateDirectory(target.FullName)
        End If

        ' Copy each file into it's new directory.
        For Each fi As FileInfo In source.GetFiles()
            Console.WriteLine("Copying {0}\{1}", target.FullName, fi.Name)
            fi.CopyTo(Path.Combine(target.ToString(), fi.Name), True)
        Next

        ' Copy each subdirectory using recursion.
        For Each diSourceSubDir As DirectoryInfo In source.GetDirectories()
            Dim nextTargetSubDir As DirectoryInfo = target.CreateSubdirectory(diSourceSubDir.Name)
            CopyAll(diSourceSubDir, nextTargetSubDir)
        Next
    End Sub

    Shared Sub Main()
        Dim sourceDirectory As String = "c:\\sourceDirectory"
        Dim targetDirectory As String = "c:\\targetDirectory"

        Dim diSource As DirectoryInfo = New DirectoryInfo(sourceDirectory)
        Dim diTarget As DirectoryInfo = New DirectoryInfo(targetDirectory)

        CopyAll(diSource, diTarget)
    End Sub
    ' Output will vary based on the contents of the source directory.
End Class

注釈

ディレクトリのコピー、移動、名前変更、作成、削除などの一般的な操作には、 DirectoryInfo クラスを使用します。

オブジェクトを複数回再利用する場合は、セキュリティ チェックが常に必要になるとは限らないため、Directory クラスの対応する静的メソッドではなく、DirectoryInfoのインスタンス メソッドを使用することを検討してください。

Note

パスを入力文字列として受け入れるメンバーでは、そのパスは整形式である必要があります。または例外が発生します。 たとえば、パスが完全修飾されていてもスペースで始まる場合、パスはクラスのメソッドでトリミングされません。 そのため、パスの形式が正しくないため、例外が発生します。 同様に、パスまたはパスの組み合わせを 2 回完全修飾することはできません。 たとえば、"c:\temp c:\windows" では、ほとんどの場合、例外も発生します。 パス文字列を受け入れるメソッドを使用する場合は、パスが整形式であることを確認します。

パスを受け入れるメンバーでは、パスはファイルまたはディレクトリのみを参照できます。 指定したパスは、サーバー名と共有名の相対パスまたは汎用名前付け規則 (UNC) パスを参照することもできます。 たとえば、次のすべてのパスを指定できます。

  • C# では "c:\\MyDir\\MyFile.txt"、Visual Basic では "c:\MyDir\MyFile.txt" です。

  • C# では "c:\\MyDir"、Visual Basic では "c:\MyDir" です。

  • C# では "MyDir\\MySubdir"、Visual Basic では "MyDir\MySubDir" です。

  • C# では "\\\MyServer\\MyShare"、Visual Basic では "\\MyServer\MyShare" です。

既定では、新しいディレクトリへの完全な読み取り/書き込みアクセス権はすべてのユーザーに付与されます。

一般的な I/O タスクの一覧については、「 一般的な I/O タスク」を参照してください。

コンストラクター

名前 説明
DirectoryInfo(String)

指定したパスの DirectoryInfo クラスの新しいインスタンスを初期化します。

フィールド

名前 説明
FullPath

ディレクトリまたはファイルの完全修飾パスを表します。

(継承元 FileSystemInfo)
OriginalPath

相対パスと絶対パスのどちらを指定したかに関係なく、ユーザーが最初に指定したパス。

(継承元 FileSystemInfo)

プロパティ

名前 説明
Attributes

現在のファイルまたはディレクトリの属性を取得または設定します。

(継承元 FileSystemInfo)
CreationTime

現在のファイルまたはディレクトリの作成時刻を取得または設定します。

(継承元 FileSystemInfo)
CreationTimeUtc

現在のファイルまたはディレクトリの作成時刻を協定世界時 (UTC) で取得または設定します。

(継承元 FileSystemInfo)
Exists

ディレクトリが存在するかどうかを示す値を取得します。

Extension

ファイル名全体であっても先頭のドット . を含む、ファイル名の拡張子部分を取得します。拡張子がない場合は空の文字列を取得します。

(継承元 FileSystemInfo)
FullName

ディレクトリの完全なパスを取得します。

FullName

ディレクトリまたはファイルの完全なパスを取得します。

(継承元 FileSystemInfo)
LastAccessTime

現在のファイルまたはディレクトリが最後にアクセスされた時刻を取得または設定します。

(継承元 FileSystemInfo)
LastAccessTimeUtc

現在のファイルまたはディレクトリが最後にアクセスされた時刻を協定世界時 (UTC) で取得または設定します。

(継承元 FileSystemInfo)
LastWriteTime

現在のファイルまたはディレクトリが最後に書き込まれた時刻を取得または設定します。

(継承元 FileSystemInfo)
LastWriteTimeUtc

現在のファイルまたはディレクトリが最後に書き込まれた時刻を協定世界時 (UTC) で取得または設定します。

(継承元 FileSystemInfo)
Name

この DirectoryInfo インスタンスの名前を取得します。

Parent

指定したサブディレクトリの親ディレクトリを取得します。

Root

ディレクトリのルート部分を取得します。

メソッド

名前 説明
Create()

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

Create(DirectorySecurity)

DirectorySecurity オブジェクトを使用してディレクトリを作成します。

CreateObjRef(Type)

リモート オブジェクトとの通信に使用されるプロキシの生成に必要なすべての関連情報を含むオブジェクトを作成します。

(継承元 MarshalByRefObject)
CreateSubdirectory(String, DirectorySecurity)

指定したセキュリティを使用して、指定したパスにサブディレクトリまたはサブディレクトリを作成します。 指定したパスは、 DirectoryInfo クラスのこのインスタンスからの相対パスにすることができます。

CreateSubdirectory(String)

指定したパスにサブディレクトリまたはサブディレクトリを作成します。 指定したパスは、 DirectoryInfo クラスのこのインスタンスからの相対パスにすることができます。

Delete()

この DirectoryInfo が空の場合は削除します。

Delete(Boolean)

サブディレクトリとファイルを削除するかどうかを指定して、 DirectoryInfoのこのインスタンスを削除します。

EnumerateDirectories()

現在のディレクトリ内のディレクトリ情報の列挙可能なコレクションを返します。

EnumerateDirectories(String, EnumerationOptions)

指定した検索パターンと列挙オプションに一致するディレクトリ情報の列挙可能なコレクションを返します。

EnumerateDirectories(String, SearchOption)

指定した検索パターンと検索サブディレクトリ オプションに一致するディレクトリ情報の列挙可能なコレクションを返します。

EnumerateDirectories(String)

指定した検索パターンに一致するディレクトリ情報の列挙可能なコレクションを返します。

EnumerateFiles()

現在のディレクトリ内のファイル情報の列挙可能なコレクションを返します。

EnumerateFiles(String, EnumerationOptions)

指定した検索パターンと列挙オプションに一致する、列挙可能なファイル情報のコレクションを返します。

EnumerateFiles(String, SearchOption)

指定した検索パターンと検索サブディレクトリ オプションに一致する、列挙可能なファイル情報のコレクションを返します。

EnumerateFiles(String)

検索パターンに一致する列挙可能なファイル情報のコレクションを返します。

EnumerateFileSystemInfos()

現在のディレクトリ内のファイル システム情報の列挙可能なコレクションを返します。

EnumerateFileSystemInfos(String, EnumerationOptions)

指定した検索パターンと列挙オプションに一致するファイル システム情報の列挙可能なコレクションを返します。

EnumerateFileSystemInfos(String, SearchOption)

指定した検索パターンと検索サブディレクトリ オプションに一致するファイル システム情報の列挙可能なコレクションを返します。

EnumerateFileSystemInfos(String)

指定した検索パターンに一致するファイル システム情報の列挙可能なコレクションを返します。

Equals(Object)

指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetAccessControl()

現在のDirectoryInfo オブジェクトによって記述されたディレクトリのアクセス制御リスト (ACL) エントリをカプセル化するDirectorySecurity オブジェクトを取得します。

GetAccessControl(AccessControlSections)

現在のDirectoryInfo オブジェクトによって記述されたディレクトリの指定した種類のアクセス制御リスト (ACL) エントリをカプセル化するDirectorySecurity オブジェクトを取得します。

GetDirectories()

現在のディレクトリのサブディレクトリを返します。

GetDirectories(String, EnumerationOptions)

指定した検索パターンと列挙オプションに一致する現在の DirectoryInfo 内のディレクトリの配列を返します。

GetDirectories(String, SearchOption)

指定した検索条件に一致し、値を使用してサブディレクトリを検索するかどうかを判断する現在の DirectoryInfo 内のディレクトリの配列を返します。

GetDirectories(String)

指定された検索条件に一致する現在の DirectoryInfo 内のディレクトリの配列を返します。

GetFiles()

現在のディレクトリからファイルリストを返します。

GetFiles(String, EnumerationOptions)

現在のディレクトリから、指定した検索パターンと列挙オプションに一致するファイル リストを返します。

GetFiles(String, SearchOption)

指定された検索パターンに一致し、値を使用してサブディレクトリを検索するかどうかを判断する現在のディレクトリからファイル リストを返します。

GetFiles(String)

指定された検索パターンに一致する現在のディレクトリからファイル リストを返します。

GetFileSystemInfos()

ディレクトリ内のすべてのファイルとサブディレクトリを表す厳密に型指定された FileSystemInfo エントリの配列を返します。

GetFileSystemInfos(String, EnumerationOptions)

指定した検索パターンと列挙オプションに一致するファイルとサブディレクトリを表す、厳密に型指定された FileSystemInfo オブジェクトの配列を取得します。

GetFileSystemInfos(String, SearchOption)

指定した検索条件に一致するファイルとサブディレクトリを表す FileSystemInfo オブジェクトの配列を取得します。

GetFileSystemInfos(String)

指定した検索条件に一致するファイルとサブディレクトリを表す、厳密に型指定された FileSystemInfo オブジェクトの配列を取得します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetLifetimeService()

このインスタンスの有効期間ポリシーを制御する現在の有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
GetObjectData(SerializationInfo, StreamingContext)

ファイル名と追加の例外情報を使用して、 SerializationInfo オブジェクトを設定します。

(継承元 FileSystemInfo)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
InitializeLifetimeService()

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
MemberwiseClone(Boolean)

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。

(継承元 MarshalByRefObject)
MoveTo(String)

DirectoryInfo インスタンスとその内容を新しいパスに移動します。

Refresh()

オブジェクトの状態を更新します。

(継承元 FileSystemInfo)
SetAccessControl(DirectorySecurity)

DirectorySecurity オブジェクトによって記述されたアクセス制御リスト (ACL) エントリを、現在のDirectoryInfo オブジェクトによって記述されたディレクトリに適用します。

ToString()

DirectoryInfo コンストラクターに渡された元のパスを返します。 このメソッドの代わりに、完全なパスまたはファイル/ディレクトリ名に FullName プロパティまたは Name プロパティを使用します。

適用対象

こちらもご覧ください