Directory.CreateDirectory メソッド

定義

指定したパス内のすべてのディレクトリを作成します。

オーバーロード

名前 説明
CreateDirectory(String)

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

CreateDirectory(String, DirectorySecurity)

指定した Windows セキュリティを適用して、既に存在しない限り、指定したパス内のすべてのディレクトリを作成します。

CreateDirectory(String)

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

public:
 static System::IO::DirectoryInfo ^ CreateDirectory(System::String ^ path);
public static System.IO.DirectoryInfo CreateDirectory(string path);
static member CreateDirectory : string -> System.IO.DirectoryInfo
Public Shared Function CreateDirectory (path As String) As DirectoryInfo

パラメーター

path
String

作成するディレクトリ。

返品

指定したパスにあるディレクトリを表すオブジェクト。 指定したパスのディレクトリが既に存在するかどうかに関係なく、このオブジェクトが返されます。

例外

pathで指定されたディレクトリはファイルです。

-または-

ネットワーク名が不明です。

呼び出し元に必要なアクセス許可がありません。

2.1 より前のバージョンの .NET Framework と .NET Core: path は長さ 0 の文字列で、空白のみを含むか、1 つ以上の無効な文字を含みます。 GetInvalidPathChars() メソッドを使用して、無効な文字のクエリを実行できます。

-または-

path はコロン文字 (:) で始まるか、またはコロン文字のみを含みます。

pathnullです。

指定したパス、ファイル名、またはその両方が、システム定義の最大長を超えています。

指定されたパスが無効です (たとえば、マップされていないドライブ上にあります)。

path には、コロン文字 (ドライブ ラベル ("C:\") の一部ではない:)) が含まれています。

次の例では、指定したディレクトリを作成および削除します。

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        // Specify the directory you want to manipulate.
        string path = @"c:\MyDir";
        
        // Determine whether the directory exists.
        if (Directory.Exists(path))
        {
            Console.WriteLine("That path exists already.");
            return;
        }
        
        DirectoryInfo di;
        try
        {
            // Try to create the directory.
            di = Directory.CreateDirectory(path);
            Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(path));
        }
        catch (UnauthorizedAccessException e)
        {
            Console.WriteLine("The caller does not have the required permission to create `{0}`", path);
            return;
        }
        
        // Delete the directory.
        di.Delete();
        Console.WriteLine("The directory was deleted successfully.");
    }
}
open System.IO

// Specify the directory you want to manipulate.
let path = @"c:\MyDir"

try
    // Determine whether the directory exists.
    if Directory.Exists path then
        printfn "That path exists already."
    else
        // Try to create the directory.
        let di = Directory.CreateDirectory path
        printfn $"The directory was created successfully at {Directory.GetCreationTime path}."

        // 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 directory you want to manipulate.
        Dim path As String = "c:\MyDir"

        Try
            ' Determine whether the directory exists.
            If Directory.Exists(path) Then
                Console.WriteLine("That path exists already.")
                Return
            End If

            ' Try to create the directory.
            Dim di As DirectoryInfo = Directory.CreateDirectory(path)
            Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(path))

            ' 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

現在のディレクトリが C:\Users\User1 のときにディレクトリ C:\Users\User1\Public\Html を作成するには、次のいずれかの呼び出しを使用してバックスラッシュが正しく解釈されるようにします。

Directory.CreateDirectory("Public\Html")
Directory.CreateDirectory("\Users\User1\Public\Html")
Directory.CreateDirectory("c:\Users\User1\Public\Html")
Directory.CreateDirectory("Public\\Html");
Directory.CreateDirectory("\\Users\\User1\\Public\\Html");
Directory.CreateDirectory("c:\\Users\\User1\\Public\\Html");

注釈

既に存在しないか、pathの一部が無効でない限り、pathで指定されたすべてのディレクトリが作成されます。 ディレクトリが既に存在する場合、このメソッドは新しいディレクトリを作成しませんが、既存のディレクトリの DirectoryInfo オブジェクトを返します。

path パラメーターは、ファイル パスではなくディレクトリ パスを指定します。

末尾のスペースは、ディレクトリを作成する前に、 path パラメーターの末尾から削除されます。

書き込みアクセス権を持つ共有上に、リモート コンピューター上にディレクトリを作成できます。 UNC パスがサポートされています。たとえば、path: Visual Basic では \\2009\Archives\December、C# では \\\\2009\\Archives\\December を指定できます。

コロン文字のみを含むディレクトリの作成 (:)はサポートされていないため、 NotSupportedException がスローされます。

Unix システムでは、パス区切り記号としてスラッシュ (/) を使用します。

こちらもご覧ください

適用対象

CreateDirectory(String, DirectorySecurity)

指定した Windows セキュリティを適用して、既に存在しない限り、指定したパス内のすべてのディレクトリを作成します。

public:
 static System::IO::DirectoryInfo ^ CreateDirectory(System::String ^ path, System::Security::AccessControl::DirectorySecurity ^ directorySecurity);
public static System.IO.DirectoryInfo CreateDirectory(string path, System.Security.AccessControl.DirectorySecurity directorySecurity);
static member CreateDirectory : string * System.Security.AccessControl.DirectorySecurity -> System.IO.DirectoryInfo
Public Shared Function CreateDirectory (path As String, directorySecurity As DirectorySecurity) As DirectoryInfo

パラメーター

path
String

作成するディレクトリ。

directorySecurity
DirectorySecurity

ディレクトリに適用するアクセス制御。

返品

指定したパスにあるディレクトリを表すオブジェクト。 指定したパスのディレクトリが既に存在するかどうかに関係なく、このオブジェクトが返されます。

例外

pathで指定されたディレクトリはファイルです。

-または-

ネットワーク名が不明です。

呼び出し元に必要なアクセス許可がありません。

2.1 より前のバージョンの .NET Framework と .NET Core: path は長さ 0 の文字列で、空白のみを含むか、1 つ以上の無効な文字を含みます。 GetInvalidPathChars() メソッドを使用して、無効な文字のクエリを実行できます。

-または-

path はコロン文字 (:) で始まるか、またはコロン文字のみを含みます。

pathnullです。

指定したパス、ファイル名、またはその両方が、システム定義の最大長を超えています。

指定されたパスが無効です (たとえば、マップされていないドライブ上にあります)。

path には、コロン文字 (ドライブ ラベル ("C:\") の一部ではない:)) が含まれています。

次の例では、2 つのユーザー アカウントのアクセス規則を持つ新しいディレクトリを作成します。

using System;
using System.IO;
using System.Security.AccessControl;

partial class Program
{
    static void DirectorySecurityExample()
    {
        DirectorySecurity securityRules = new DirectorySecurity();
        securityRules.AddAccessRule(new FileSystemAccessRule(@"Domain\account1", FileSystemRights.Read, AccessControlType.Allow));
        securityRules.AddAccessRule(new FileSystemAccessRule(@"Domain\account2", FileSystemRights.FullControl, AccessControlType.Allow));

        DirectoryInfo di = Directory.CreateDirectory(@"C:\destination\NewDirectory", securityRules);
    }
}
open System.IO
open System.Security.AccessControl

let securityRules = DirectorySecurity()
securityRules.AddAccessRule(FileSystemAccessRule(@"Domain\account1", FileSystemRights.Read, AccessControlType.Allow))
securityRules.AddAccessRule(FileSystemAccessRule(@"Domain\account2", FileSystemRights.FullControl, AccessControlType.Allow))

let di = Directory.CreateDirectory(@"C:\destination\NewDirectory", securityRules)
Imports System.IO
Imports System.Security.AccessControl

Partial Class Program
    Shared Sub DirectorySecurityExample()

        Dim securityRules As DirectorySecurity = New DirectorySecurity()
        securityRules.AddAccessRule(New FileSystemAccessRule("Domain\account1", FileSystemRights.Read, AccessControlType.Allow))
        securityRules.AddAccessRule(New FileSystemAccessRule("Domain\account2", FileSystemRights.FullControl, AccessControlType.Allow))

        Dim di As DirectoryInfo = Directory.CreateDirectory("C:\destination\NewDirectory", securityRules)

    End Sub
End Class

注釈

このメソッドのオーバーロードを使用して、アクセス制御を使用してディレクトリを作成します。セキュリティが適用される前にディレクトリにアクセスできる可能性はありません。

path パラメーターで指定されたすべてのディレクトリは、既に存在しないか、pathの一部が無効でない限り、作成されます。 path パラメーターは、ファイル パスではなくディレクトリ パスを指定します。 ディレクトリが既に存在する場合、このメソッドは新しいディレクトリを作成しませんが、既存のディレクトリの DirectoryInfo オブジェクトを返します。

末尾のスペースは、ディレクトリを作成する前に、 path パラメーターの末尾から削除されます。

書き込みアクセス権を持つ共有上に、リモート コンピューター上にディレクトリを作成できます。 UNC パスがサポートされています。たとえば、path: Visual Basic では \\2009\Archives\December、C# では \\\\2009\\Archives\\December を指定できます。

コロン文字のみを含むディレクトリ (:) の作成はサポートされておらず、 NotSupportedException がスローされます。

適用対象