DirectoryInfo.Create メソッド

定義

ディレクトリを作成します。Creates a directory.

オーバーロード

Create()

ディレクトリを作成します。Creates a directory.

Create(DirectorySecurity)

DirectorySecurity オブジェクトを使用してディレクトリを作成します。Creates a directory using a DirectorySecurity object.

Create()

ディレクトリを作成します。Creates a directory.

public:
 void Create();
public void Create ();
member this.Create : unit -> unit
Public Sub Create ()

例外

ディレクトリを作成できません。The directory cannot be created.

次の例では、指定されたディレクトリが存在するかどうかを確認し、ディレクトリが存在しない場合は作成して、ディレクトリを削除します。The following example checks whether a specified directory exists, creates the directory if it does not exist, and deletes the directory.

using namespace System;
using namespace System::IO;
int main()
{
   
   // Specify the directories you want to manipulate.
   DirectoryInfo^ di = gcnew DirectoryInfo( "c:\\MyDir" );
   try
   {
      
      // Determine whether the directory exists.
      if ( di->Exists )
      {
         
         // Indicate that it already exists.
         Console::WriteLine( "That path exists already." );
         return 0;
      }
      
      // 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 );
   }

}

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 it 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 {}
    }
}
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

注釈

ディレクトリが既に存在する場合、このメソッドは何も行いません。If the directory already exists, this method does nothing.

このメソッドを呼び出す前にディレクトリが存在しない場合は、作成が成功すると、ディレクトリに関するキャッシュされた属性情報がフラッシュされます。If the directory did not exist before calling this method, then any cached attribute information about the directory will be flushed if the creation is successful.

共通 I/O タスクの一覧は、 共通 I/O タスク を参照してください。For a list of common I/O tasks, see Common I/O Tasks.

こちらもご覧ください

Create(DirectorySecurity)

DirectorySecurity オブジェクトを使用してディレクトリを作成します。Creates a directory using a DirectorySecurity object.

public:
 void Create(System::Security::AccessControl::DirectorySecurity ^ directorySecurity);
public void Create (System.Security.AccessControl.DirectorySecurity directorySecurity);
member this.Create : System.Security.AccessControl.DirectorySecurity -> unit
Public Sub Create (directorySecurity As DirectorySecurity)

パラメーター

directorySecurity
DirectorySecurity

ディレクトリに適用するアクセス制御。The access control to apply to the directory.

例外

path で指定されたディレクトリは読み取り専用であるか、空ではありません。The directory specified by path is read-only or is not empty.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

path は長さ 0 の文字列であるか、空白のみで構成されるか、または InvalidPathChars で定義される 1 つ以上の使用できない文字を含んでいます。path is a zero-length string, contains only white space, or contains one or more invalid characters as defined by InvalidPathChars.

pathnullです。path is null.

指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。The specified path, file name, or both exceed the system-defined maximum length.

マップされていないドライブにあるなど、指定されたパスが無効です。The specified path is invalid, such as being on an unmapped drive.

コロン (:) 文字だけでディレクトリを作成しようとしました。Creating a directory with only the colon (:) character was attempted.

次のコード例では、指定されたディレクトリセキュリティ属性を使用して、ユーザーの一時フォルダー内に新しいディレクトリを作成します。The following code example creates a new directory inside the user's temporary folder with the specified directory security attributes:

using System.IO;
using System.Security.AccessControl;
using System.Security.Principal;
namespace ConsoleApp
{
    class Program
    {
        static void Main()
        {
            DirectorySecurity security = new DirectorySecurity();
            SecurityIdentifier identity = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
            FileSystemAccessRule accessRule = new FileSystemAccessRule(identity, FileSystemRights.FullControl, AccessControlType.Allow);
            security.AddAccessRule(accessRule);
            string path = Path.Combine(Path.GetTempPath(), "directoryToCreate");
            DirectoryInfo dirInfo = new DirectoryInfo(path);
            dirInfo.Create(security);
        }
    }
}

注釈

このメソッドオーバーロードを使用してアクセス制御を持つディレクトリを作成するため、セキュリティが適用される前にディレクトリにアクセスできる可能性はありません。Use this method overload to create a directory with access control, so there is no chance the directory can be accessed before security is applied.

ディレクトリが既に存在する場合、このメソッドは何も行いません。If the directory already exists, this method does nothing.

共通 I/O タスクの一覧は、 共通 I/O タスク を参照してください。For a list of common I/O tasks, see Common I/O Tasks.

重要

このメソッドは FileSystemAclExtensions 、アセンブリの一部として、クラスの拡張メソッドとして .Net Core 3.1 に移植されました。 System.Security.AccessControl Create(DirectoryInfo, DirectorySecurity)This method was ported to .NET Core 3.1 as an extension method of the FileSystemAclExtensions class as part of the System.Security.AccessControl assembly: Create(DirectoryInfo, DirectorySecurity).

適用対象