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

作成するディレクトリ。

戻り値

DirectoryInfo

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

例外

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

  • または - ネットワーク名が不明です。

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

2.1 より前の .NET Framework および .net Core バージョン: 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 {}
    }
}
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

現在のディレクトリが /home/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 パスがサポートされています。たとえば、 path \\2009\Archives\December Visual Basic、 \\\\2009\\Archives\\December C# では、に対して次のように指定できます。

コロン文字のみを含むディレクトリを作成する (:)はサポートされていないため、がスローされ 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

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

戻り値

DirectoryInfo

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

例外

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;

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);
        }
    }
}
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 パスがサポートされています。たとえば、 path \\2009\Archives\December Visual Basic、 \\\\2009\\Archives\\December C# では、に対して次のように指定できます。

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

適用対象