Directory.CreateDirectory メソッド

定義

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

オーバーロード

CreateDirectory(String)

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

CreateDirectory(String, UnixFileMode)

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

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

作成するディレクトリ。

戻り値

DirectoryInfo

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

例外

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

- または -

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

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

.NET Framework バージョンと .NET Core バージョンが 2.1 より前の場合: path は長さ 0 の文字列、空白のみを含む、または無効な文字が 1 つ以上含まれています。 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。

- または -

path のプレフィックスまたは内容がコロン文字 (:) だけです。

pathnullです。

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

指定されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。

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

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

using namespace System;
using namespace System::IO;
int main()
{
   
   // Specify the directory you want to manipulate.
   String^ path = "c:\\MyDir";
   try
   {
      
      // Determine whether the directory exists.
      if ( Directory::Exists( path ) )
      {
         Console::WriteLine( "That path exists already." );
         return 0;
      }
      
      // Try to create the directory.
      DirectoryInfo^ di = 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 ( Exception^ e ) 
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
using System;
using System.IO;

class Test
{
    public static void Main()
    {
        // Specify the directory you want to manipulate.
        string path = @"c:\MyDir";

        try
        {
            // Determine whether the directory exists.
            if (Directory.Exists(path))
            {
                Console.WriteLine("That path exists already.");
                return;
            }

            // Try to create the directory.
            DirectoryInfo di = 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 (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
        finally {}
    }
}
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");  
Directory::CreateDirectory("Public\\Html");  
Directory::CreateDirectory("\\Users\\User1\\Public\\Html");  
Directory::CreateDirectory("c:\\Users\\User1\\Public\\Html");  

注釈

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

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

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

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

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

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

こちらもご覧ください

適用対象

CreateDirectory(String, UnixFileMode)

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

public:
 static System::IO::DirectoryInfo ^ CreateDirectory(System::String ^ path, System::IO::UnixFileMode unixCreateMode);
[System.Runtime.Versioning.UnsupportedOSPlatform("windows")]
public static System.IO.DirectoryInfo CreateDirectory (string path, System.IO.UnixFileMode unixCreateMode);
[<System.Runtime.Versioning.UnsupportedOSPlatform("windows")>]
static member CreateDirectory : string * System.IO.UnixFileMode -> System.IO.DirectoryInfo
Public Shared Function CreateDirectory (path As String, unixCreateMode As UnixFileMode) As DirectoryInfo

パラメーター

path
String

作成するディレクトリ。

unixCreateMode
UnixFileMode

ディレクトリの作成に使用される Unix ファイル モードを指定する列挙値のビットごとの組み合わせ。

戻り値

DirectoryInfo

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

属性

例外

path は長さ 0 の文字列であるか、1 つ以上の無効な文字を含みます。 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。

pathnullです。

ファイル モードが無効です。

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

指定したパスがシステムで定義されている最大長を超えています。

path はファイルです。

path コンポーネントはディレクトリではありません。

適用対象

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

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

戻り値

DirectoryInfo

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

例外

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

- または -

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

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

.NET Framework バージョンと .NET Core バージョンが 2.1 より前の場合: path は長さ 0 の文字列、空白のみを含む、または無効な文字が 1 つ以上含まれています。 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。

- または -

path のプレフィックスまたは内容がコロン文字 (:) だけです。

pathnullです。

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

指定されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。

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

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

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

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            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

Module Module1

    Sub Main()
        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 Module

注釈

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

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

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

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

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

適用対象