Directory.CreateDirectory Metod

Definition

Skapar alla kataloger i en angiven sökväg.

Överlagringar

Name Description
CreateDirectory(String)

Skapar alla kataloger och underkataloger i den angivna sökvägen om de inte redan finns.

CreateDirectory(String, DirectorySecurity)

Skapar alla kataloger i den angivna sökvägen, såvida de inte redan finns och tillämpar den angivna Windows säkerhet.

CreateDirectory(String)

Skapar alla kataloger och underkataloger i den angivna sökvägen om de inte redan finns.

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

Parametrar

path
String

Katalogen som ska skapas.

Returer

Ett objekt som representerar katalogen på den angivna sökvägen. Det här objektet returneras oavsett om det redan finns en katalog på den angivna sökvägen.

Undantag

Katalogen som anges av path är en fil.

-eller-

Nätverksnamnet är inte känt.

Anroparen har inte den behörighet som krävs.

.NET Framework- och .NET Core-versioner som är äldre än 2.1: path är en sträng med noll längd, innehåller endast tomt utrymme eller innehåller ett eller flera ogiltiga tecken. Du kan fråga efter ogiltiga tecken med hjälp GetInvalidPathChars() av metoden .

-eller-

path är prefix med, eller innehåller, endast ett kolontecken (:).

path är null.

Den angivna sökvägen, filnamnet eller båda överskrider den systemdefinierade maximala längden.

Den angivna sökvägen är ogiltig (den finns till exempel på en ommappad enhet).

path innehåller ett kolontecken (:) som inte ingår i en enhetsetikett ("C:\").

Exempel

I följande exempel skapas och tas den angivna katalogen bort:

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

Om du vill skapa katalogen C:\Users\User1\Public\Html när den aktuella katalogen är C:\Users\User1 använder du något av följande anrop för att säkerställa att omvänt snedstreck tolkas korrekt:

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");

Kommentarer

Alla kataloger som anges i path skapas, såvida de inte redan finns eller om en del av path inte är ogiltig. Om katalogen redan finns skapar den här metoden inte en ny katalog, men returnerar ett DirectoryInfo objekt för den befintliga katalogen.

Parametern path anger en katalogsökväg, inte en filsökväg.

Avslutande blanksteg tas bort från slutet av parametern path innan katalogen skapas.

Du kan skapa en katalog på en fjärrdator på en resurs som du har skrivåtkomst till. UNC-sökvägar stöds. Du kan till exempel ange följande för path: \\2009\Archives\December i Visual Basic och \\\\2009\\Archives\\December i C#.

Om du skapar en katalog med endast kolontecknet (:) stöds inte och orsakar att en NotSupportedException genereras.

I Unix-system använder du ett snedstreck (/) som sökvägsavgränsare.

Se även

Gäller för

CreateDirectory(String, DirectorySecurity)

Skapar alla kataloger i den angivna sökvägen, såvida de inte redan finns och tillämpar den angivna Windows säkerhet.

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

Parametrar

path
String

Katalogen som ska skapas.

directorySecurity
DirectorySecurity

Åtkomstkontrollen som ska tillämpas på katalogen.

Returer

Ett objekt som representerar katalogen på den angivna sökvägen. Det här objektet returneras oavsett om det redan finns en katalog på den angivna sökvägen.

Undantag

Katalogen som anges av path är en fil.

-eller-

Nätverksnamnet är inte känt.

Anroparen har inte den behörighet som krävs.

.NET Framework- och .NET Core-versioner som är äldre än 2.1: path är en sträng med noll längd, innehåller endast tomt utrymme eller innehåller ett eller flera ogiltiga tecken. Du kan fråga efter ogiltiga tecken med hjälp GetInvalidPathChars() av metoden .

-eller-

path är prefix med, eller innehåller, endast ett kolontecken (:).

path är null.

Den angivna sökvägen, filnamnet eller båda överskrider den systemdefinierade maximala längden.

Den angivna sökvägen är ogiltig (den finns till exempel på en ommappad enhet).

path innehåller ett kolontecken (:) som inte ingår i en enhetsetikett ("C:\").

Exempel

I följande exempel skapas en ny katalog med åtkomstregler för två användarkonton.

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

Kommentarer

Använd den här metoden för att skapa en katalog med åtkomstkontroll, så det finns ingen chans att katalogen kan nås innan säkerheten tillämpas.

Alla kataloger som anges i parametern path skapas, såvida de inte redan finns eller om inte någon del av path är ogiltig. Parametern path anger en katalogsökväg, inte en filsökväg. Om katalogen redan finns skapar den här metoden inte en ny katalog, men returnerar ett DirectoryInfo objekt för den befintliga katalogen.

Avslutande blanksteg tas bort från slutet av parametern path innan katalogen skapas.

Du kan skapa en katalog på en fjärrdator på en resurs som du har skrivåtkomst till. UNC-sökvägar stöds. Du kan till exempel ange följande för path: \\2009\Archives\December i Visual Basic och \\\\2009\\Archives\\December i C#.

Att skapa en katalog med endast kolontecknet (:) stöds inte och gör att en NotSupportedException genereras.

Gäller för