Directory クラス

定義

ディレクトリやサブディレクトリを通じて、作成、移動、および列挙するための静的メソッドを公開します。 このクラスは継承できません。

public ref class Directory abstract sealed
public ref class Directory sealed
public static class Directory
public sealed class Directory
[System.Runtime.InteropServices.ComVisible(true)]
public static class Directory
type Directory = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type Directory = class
Public Class Directory
Public NotInheritable Class Directory
継承
Directory
属性

次の例では、ディレクトリからすべてのテキスト ファイルを取得し、新しいディレクトリに移動する方法を示します。 ファイルが移動されると、元のディレクトリに存在しなくなります。

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt");

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"

try
    let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")

    for currentFile in txtFiles do
        let fileName = currentFile.Substring(sourceDirectory.Length + 1)
        Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))

with e ->
    printfn $"{e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try
    End Sub

End Module

次の例では、 メソッドを EnumerateFiles 使用してディレクトリからテキスト ファイルのコレクションを取得し、そのコレクションをクエリで使用して、"Example" を含むすべての行を検索する方法を示します。

using System;
using System.IO;
using System.Linq;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string archiveDirectory = @"C:\archive";

            var files = from retrievedFile in Directory.EnumerateFiles(archiveDirectory, "*.txt", SearchOption.AllDirectories)
                        from line in File.ReadLines(retrievedFile)
                        where line.Contains("Example")
                        select new
                        {
                            File = retrievedFile,
                            Line = line
                        };

            foreach (var f in files)
            {
                Console.WriteLine("{0} contains {1}", f.File, f.Line);
            }
            Console.WriteLine("{0} lines found.", files.Count().ToString());
        }
    }
}
open System.IO

let archiveDirectory = @"C:\archive"

let files = 
    query {
        for retrivedFile in Directory.EnumerateFiles(archiveDirectory, "*.txt", SearchOption.AllDirectories) do
        for line in File.ReadLines retrivedFile do
        where (line.Contains "file") 
        select 
            {| File = retrivedFile 
               Line = line |}
    }

for f in files do
    printfn $"{f.File} contains {f.Line}"
printfn "{Seq.length files} lines found."
Imports System.IO

Module Module1

    Sub Main()
        Dim archiveDirectory As String = "C:\archive"

        Dim files = From retrievedFile In Directory.EnumerateFiles(archiveDirectory, "*.txt", SearchOption.AllDirectories)
                    From line In File.ReadLines(retrievedFile)
                    Where line.Contains("Example")
                    Select New With {.curFile = retrievedFile, .curLine = line}

        For Each f In files
            Console.WriteLine("{0} contains {1}", f.curFile, f.curLine)
        Next
        Console.WriteLine("{0} lines found.", files.Count.ToString())

    End Sub

End Module

次の例では、ディレクトリとそのすべてのファイルを新しいディレクトリに移動する方法を示します。 元のディレクトリは、移動後に存在しなくなりました。

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\source";
            string destinationDirectory = @"C:\destination";

            try
            {
                Directory.Move(sourceDirectory, destinationDirectory);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\source"
let destinationDirectory = @"C:\destination"

try
    Directory.Move(sourceDirectory, destinationDirectory)
with e ->
    printfn $"{e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\source"
        Dim destinationDirectory As String = "C:\destination"

        Try
            Directory.Move(sourceDirectory, destinationDirectory)
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

End Module

注釈

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

  • ディレクトリを作成するには、いずれかの方法を CreateDirectory 使用します。

  • ディレクトリを削除するには、いずれかの方法を Delete 使用します。

  • アプリの現在のディレクトリを取得または設定するには、 メソッドまたは SetCurrentDirectory メソッドをGetCurrentDirectory使用します。

  • ディレクトリの作成、アクセス、および書き込みに関連する情報を操作DateTimeするには、 や SetCreationTimeなどのSetLastAccessTimeメソッドを使用します。

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

ディレクトリ関連のアクションを 1 つだけ実行する場合は、対応するDirectoryInfoインスタンス メソッドではなく静的Directoryメソッドを使用する方が効率的な場合があります。 ほとんどの Directory メソッドでは、操作するディレクトリへのパスが必要です。

Note

文字列 path パラメーターを受け取るメンバーでは、そのパスは整形式である必要があります。または例外が発生します。 たとえば、パスが完全修飾されていても、スペース (" c:\temp") で始まる場合、パス文字列はトリミングされないため、パスの形式が正しくないと見なされ、例外が発生します。 さらに、パスまたはパスの組み合わせを 2 回完全修飾することはできません。 たとえば、"c:\temp c:\windows" でも例外が発生します。 パス文字列を受け入れるメソッドを使用する場合は、パスが整形式であることを確認します。 詳細については、「Path」を参照してください。

パスを受け入れるメンバーでは、パスはファイルまたはディレクトリを参照できます。 サーバーと共有名には、完全パス、相対パス、または汎用名前付け規則 (UNC) パスを使用できます。 たとえば、次のすべてが許容されるパスです。

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

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

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

既定では、新しいディレクトリへの完全な読み取り/書き込みアクセス権はすべてのユーザーに付与されます。 ただし、アプリは既存のディレクトリにアクセスするための適切なセキュリティを持っている必要があります。

ディレクトリとそのすべてのサブディレクトリに対するアクセス許可を要求するには、パス文字列をディレクトリ区切り文字で終了します。 (たとえば、"C:\Temp\" は C:\Temp\ とそのすべてのサブディレクトリへのアクセスを許可します)。特定のディレクトリに対してのみアクセス許可を要求するには、パス文字列をピリオドで終了します。 (たとえば、"C:\Temp\." は、そのサブディレクトリではなく C:\Temp\にのみアクセス権を付与します。

パラメーターを searchPattern 受け取るメンバーでは、検索文字列にはリテラル文字と 2 つのワイルドカード文字 *と ?の任意の組み合わせを指定できます。 このパラメーターは正規表現を認識しません。 詳細については、 メソッドまたは パラメーターを EnumerateDirectories(String, String) 使用するその他のメソッドを searchPattern 参照してください。

共通 I/O タスクの一覧は、 共通 I/O タスク を参照してください。

Directory および DirectoryInfo は、Windows ストア アプリでの使用はサポートされていません。 Windows ストア アプリのファイルとフォルダーにアクセスする方法については、「 データとファイルへのアクセス (Windows ストア アプリ)」を参照してください。

メソッド

CreateDirectory(String)

既に存在している場合以外は、指定したパスにすべてのディレクトリとサブディレクトリを作成します。

CreateDirectory(String, DirectorySecurity)

既に存在している場合以外は、指定したパスにすべてのディレクトリを作成し、指定した Windows セキュリティを適用します。

CreateDirectory(String, UnixFileMode)

既に存在しない限り、指定したアクセス許可を持つ指定したパス内のすべてのディレクトリとサブディレクトリを作成します。

CreateSymbolicLink(String, String)

によって識別される path ディレクトリ シンボリック リンクを 作成します pathToTarget

CreateTempSubdirectory(String)

現在のユーザーの一時ディレクトリに、一意の名前の空のディレクトリを作成します。

Delete(String)

指定されたパスから空のディレクトリを削除します。

Delete(String, Boolean)

指定したディレクトリと、特に指定されている場合はディレクトリ内の任意のサブディレクトリおよびファイルを削除します。

EnumerateDirectories(String)

指定されたパスに存在するディレクトリの完全名から成る、列挙可能なコレクションを返します。

EnumerateDirectories(String, String)

指定されたパスから、検索パターンに一致するディレクトリの完全名から成る、列挙可能なコレクションを返します。

EnumerateDirectories(String, String, EnumerationOptions)

指定したパス内にあり、検索パターンと一致するディレクトリの完全名の列挙可能なコレクションを返します。必要に応じて、サブディレクトリを検索します。

EnumerateDirectories(String, String, SearchOption)

指定されたパスから、検索パターンに一致するディレクトリの完全名から成る、列挙可能なコレクションを返します。オプションでサブディレクトリを検索対象にできます。

EnumerateFiles(String)

指定されたパスに存在するファイルの完全名から成る、列挙可能なコレクションを返します。

EnumerateFiles(String, String)

指定されたパスから、検索パターンに一致するファイルの完全名から成る、列挙可能なコレクションを返します。

EnumerateFiles(String, String, EnumerationOptions)

指定したパス内にあり、検索パターンと列挙オプションに一致する、ファイルの完全名の列挙可能なコレクションを返します。必要に応じて、サブディレクトリを検索します。

EnumerateFiles(String, String, SearchOption)

指定されたパスから、検索パターンに一致するファイルの完全名から成る、列挙可能なコレクションを返します。オプションでサブディレクトリを検索対象にできます。

EnumerateFileSystemEntries(String)

指定されたパスに存在するファイル名とディレクトリ名の列挙可能なコレクションを返します。

EnumerateFileSystemEntries(String, String)

指定されたパス内にあり、検索パターンと一致するファイル名とディレクトリ名の列挙可能なコレクションを返します。

EnumerateFileSystemEntries(String, String, EnumerationOptions)

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

EnumerateFileSystemEntries(String, String, SearchOption)

指定されたパスにあるディレクトリのうち、検索パターンに一致するファイル名およびディレクトリ名の列挙可能なコレクションを返します。オプションでサブディレクトリを検索対象にすることができます。

Exists(String)

指定したパスがディスク上の既存のディレクトリを参照しているかどうかを確認します。

GetAccessControl(String)

指定したディレクトリのアクセス制御リスト (ACL) のエントリをカプセル化する DirectorySecurity オブジェクトを取得します。

GetAccessControl(String, AccessControlSections)

指定したディレクトリの、指定した種類のアクセス制御リスト (ACL) エントリをカプセル化する DirectorySecurity オブジェクトを取得します。

GetCreationTime(String)

ディレクトリの作成日時を取得します。

GetCreationTimeUtc(String)

世界協定時刻 (UTC: Coordinated Universal Time) 形式でのディレクトリの作成日時を取得します。

GetCurrentDirectory()

アプリケーションの現在の作業ディレクトリを取得します。

GetDirectories(String)

指定したディレクトリ内のサブディレクトリの名前 (パスを含む) を返します。

GetDirectories(String, String)

指定したディレクトリ内の指定した検索パターンに一致するサブディレクトリ名 (パスを含む) を返します。

GetDirectories(String, String, EnumerationOptions)

指定したディレクトリ内にあり、指定した検索パターンと列挙オプションに一致するサブディレクトリの名前 (パスを含む) を返します。

GetDirectories(String, String, SearchOption)

現在のディレクトリ内で、指定された検索パターンに一致するサブディレクトリの名前 (パスを含む) を返します。オプションで、サブディレクトリを検索対象にすることができます。

GetDirectoryRoot(String)

指定したパスのボリューム情報またはルート情報、あるいはその両方を返します。

GetFiles(String)

指定したディレクトリ内のファイルの名前 (パスを含む) を返します。

GetFiles(String, String)

指定したディレクトリ内の指定した検索パターンに一致するファイル名 (パスを含む) を返します。

GetFiles(String, String, EnumerationOptions)

指定したディレクトリ内にあり、指定した検索パターンと列挙オプションに一致するファイルの名前 (パスを含む) を返します。

GetFiles(String, String, SearchOption)

指定したディレクトリの中から、指定した検索パターンに一致し、サブディレクトリを検索するかどうかを決定する値を持つファイル名 (パスを含む) を返します。

GetFileSystemEntries(String)

指定したパス内のすべてのファイル名とサブディレクトリ名を返します。

GetFileSystemEntries(String, String)

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

GetFileSystemEntries(String, String, EnumerationOptions)

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

GetFileSystemEntries(String, String, SearchOption)

指定されたパスにあるファイルおよびディレクトリのうち、検索パターンに一致するすべてのファイル名およびディレクトリ名の配列を返します。オプションでサブディレクトリを検索対象にすることができます。

GetLastAccessTime(String)

指定したファイルまたはディレクトリに最後にアクセスした日付と時刻を返します。

GetLastAccessTimeUtc(String)

指定されたファイルまたはディレクトリが最後にアクセスされた日付と時刻を世界協定時刻 (UTC) 形式で返します。

GetLastWriteTime(String)

指定したファイルまたはディレクトリに最後に書き込んだ日付と時刻を返します。

GetLastWriteTimeUtc(String)

指定したファイルまたはディレクトリに最後に書き込んだ日付と時刻を世界協定時刻 (UTC) 形式で返します。

GetLogicalDrives()

このコンピューター上の論理ドライブの名前を "<ドライブ文字>:\" の形式で取得します。

GetParent(String)

絶対パスと相対パスの両方を含む指定したパスの親ディレクトリを取得します。

Move(String, String)

ファイルまたはディレクトリ、およびその内容を新しい場所に移動します。

ResolveLinkTarget(String, Boolean)

指定したディレクトリ リンクのターゲットを取得します。

SetAccessControl(String, DirectorySecurity)

DirectorySecurity オブジェクトが示すアクセス制御リスト (ACL: Access Control List) エントリを、指定したディレクトリに適用します。

SetCreationTime(String, DateTime)

指定したファイルまたはディレクトリの作成日時を設定します。

SetCreationTimeUtc(String, DateTime)

指定したファイルまたはディレクトリの作成日時を世界協定時刻 (UTC) 形式で設定します。

SetCurrentDirectory(String)

アプリケーションの現在の作業ディレクトリを指定したディレクトリに設定します。

SetLastAccessTime(String, DateTime)

指定したファイルまたはディレクトリに最後にアクセスした日付と時刻を設定します。

SetLastAccessTimeUtc(String, DateTime)

指定したファイルまたはディレクトリに最後にアクセスした日付と時刻を世界協定時刻 (UTC) 形式で設定します。

SetLastWriteTime(String, DateTime)

ディレクトリに最後に書き込んだ日付と時刻を設定します。

SetLastWriteTimeUtc(String, DateTime)

ディレクトリに最後に書き込んだ日付と時刻を世界協定時刻 (UTC) 形式で設定します。

適用対象

こちらもご覧ください