Directory.Delete Methode

Definition

Löscht ein angegebenes Verzeichnis und optional alle Unterverzeichnisse.

Überlädt

Name Beschreibung
Delete(String)

Löscht ein leeres Verzeichnis aus einem angegebenen Pfad.

Delete(String, Boolean)

Löscht das angegebene Verzeichnis, und gegebenenfalls alle Unterverzeichnisse und Dateien im Verzeichnis.

Delete(String)

Quelle:
Directory.cs
Quelle:
Directory.cs
Quelle:
Directory.cs
Quelle:
Directory.cs
Quelle:
Directory.cs

Löscht ein leeres Verzeichnis aus einem angegebenen Pfad.

public:
 static void Delete(System::String ^ path);
public static void Delete(string path);
static member Delete : string -> unit
Public Shared Sub Delete (path As String)

Parameter

path
String

Der Name des zu entfernenden leeren Verzeichnisses. Dieses Verzeichnis muss schreibbar und leer sein.

Ausnahmen

Es ist eine Datei mit demselben Namen und demselben Speicherort vorhanden path .

-oder-

Das Verzeichnis ist das aktuelle Arbeitsverzeichnis der Anwendung.

-oder-

Das angegebene path Verzeichnis ist nicht leer.

-oder-

Das Verzeichnis ist schreibgeschützt oder enthält eine schreibgeschützte Datei.

-oder-

Das Verzeichnis wird von einem anderen Prozess verwendet.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

.NET Framework- und .NET Core-Versionen, die älter als 2.1 sind: path eine leere Zeichenfolge, enthält nur Leerzeichen oder enthält mindestens ein ungültiges Zeichen. Sie können ungültige Zeichen mithilfe der GetInvalidPathChars() Methode abfragen.

path ist null.

Der angegebene Pfad, der Dateiname oder beide überschreiten die vom System definierte maximale Länge.

path ist nicht vorhanden oder konnte nicht gefunden werden.

-oder-

Der angegebene Pfad ist ungültig (z. B. auf einem nicht zugeordneten Laufwerk).

Beispiele

Das folgende Beispiel zeigt, wie Sie ein neues Verzeichnis und unterverzeichnis erstellen und dann nur das Unterverzeichnis löschen.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string subPath = @"C:\NewDirectory\NewSubDirectory";

            try
            {
                Directory.CreateDirectory(subPath);
                Directory.Delete(subPath);

                bool directoryExists = Directory.Exists(@"C:\NewDirectory");
                bool subDirectoryExists = Directory.Exists(subPath);

                Console.WriteLine("top-level directory exists: " + directoryExists);
                Console.WriteLine("sub-directory exists: " + subDirectoryExists);
            }
            catch (Exception e)
            {
                Console.WriteLine("The process failed: {0}", e.Message);
            }
        }
    }
}
open System.IO

let subPath = @"C:\NewDirectory\NewSubDirectory"

try
    Directory.CreateDirectory subPath |> ignore
    Directory.Delete subPath

    let directoryExists = Directory.Exists @"C:\NewDirectory"
    let subDirectoryExists = Directory.Exists subPath

    printfn $"top-level directory exists: {directoryExists}"
    printfn $"sub-directory exists: {subDirectoryExists}"
with e ->
    printfn $"The process failed: {e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim subPath = "C:\NewDirectory\NewSubDirectory"

        Try
            Directory.CreateDirectory(subPath)
            Directory.Delete(subPath)

            Dim directoryExists = Directory.Exists("C:\NewDirectory")
            Dim subDirectoryExists = Directory.Exists(subPath)

            Console.WriteLine("top-level directory exists: " & directoryExists)
            Console.WriteLine("sub-directory exists: " & subDirectoryExists)

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.Message)
        End Try
    End Sub

End Module

Hinweise

Diese Methode verhält sich identisch Delete(String, Boolean) mit false dem für den zweiten Parameter angegebenen Parameter.

Der path Parameter kann relative oder absolute Pfadinformationen angeben. Relative Pfadinformationen werden relativ zum aktuellen Arbeitsverzeichnis interpretiert. Informationen zum Abrufen des aktuellen Arbeitsverzeichnisses finden Sie unter GetCurrentDirectory.

Nachfolgende Leerzeichen werden vor dem Löschen des Verzeichnisses vom Ende des path Parameters entfernt.

Diese Methode löst ein IOException , wenn das im path Parameter angegebene Verzeichnis Dateien oder Unterverzeichnisse enthält.

Die Groß-/Kleinschreibung des path Parameters entspricht dem des Dateisystems, auf dem der Code ausgeführt wird. Die Groß-/Kleinschreibung wird z. B. bei NTFS (dem Standardmäßigen Windows-Dateisystem) beachtet und die Groß-/Kleinschreibung auf Linux-Dateisystemen beachtet.

Wenn das angegebene Verzeichnis im Datei-Explorer geöffnet ist, ist die Delete Methode möglicherweise nicht in der Lage, es zu löschen.

Weitere Informationen

Gilt für:

Delete(String, Boolean)

Quelle:
Directory.cs
Quelle:
Directory.cs
Quelle:
Directory.cs
Quelle:
Directory.cs
Quelle:
Directory.cs

Löscht das angegebene Verzeichnis, und gegebenenfalls alle Unterverzeichnisse und Dateien im Verzeichnis.

public:
 static void Delete(System::String ^ path, bool recursive);
public static void Delete(string path, bool recursive);
static member Delete : string * bool -> unit
Public Shared Sub Delete (path As String, recursive As Boolean)

Parameter

path
String

Der Name des zu entfernenden Verzeichnisses.

recursive
Boolean

true zum Entfernen von Verzeichnissen, Unterverzeichnissen und Dateien in path; andernfalls false.

Ausnahmen

Es ist eine Datei mit demselben Namen und demselben Speicherort vorhanden path .

-oder-

Das durch path schreibgeschützte Verzeichnis angegebene Verzeichnis ist oder recursive kein false leeres Verzeichnis ist.path

-oder-

Das Verzeichnis ist das aktuelle Arbeitsverzeichnis der Anwendung.

-oder-

Das Verzeichnis enthält eine schreibgeschützte Datei.

-oder-

Das Verzeichnis wird von einem anderen Prozess verwendet.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

.NET Framework- und .NET Core-Versionen, die älter als 2.1 sind: path eine leere Zeichenfolge, enthält nur Leerzeichen oder enthält mindestens ein ungültiges Zeichen. Sie können ungültige Zeichen mithilfe der GetInvalidPathChars() Methode abfragen.

path ist null.

Der angegebene Pfad, der Dateiname oder beide überschreiten die vom System definierte maximale Länge.

path ist nicht vorhanden oder konnte nicht gefunden werden.

-oder-

Der angegebene Pfad ist ungültig (z. B. auf einem nicht zugeordneten Laufwerk).

Beispiele

Das folgende Beispiel zeigt, wie Sie ein neues Verzeichnis, Unterverzeichnis und eine neue Datei im Unterverzeichnis erstellen und dann alle neuen Elemente rekursiv löschen.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string topPath = @"C:\NewDirectory";
            string subPath = @"C:\NewDirectory\NewSubDirectory";

            try
            {
                Directory.CreateDirectory(subPath);

                using (StreamWriter writer = File.CreateText(subPath + @"\example.txt"))
                {
                    writer.WriteLine("content added");
                }

                Directory.Delete(topPath, true);

                bool directoryExists = Directory.Exists(topPath);

                Console.WriteLine("top-level directory exists: " + directoryExists);
            }
            catch (Exception e)
            {
                Console.WriteLine("The process failed: {0}", e.Message);
            }
        }
    }
}
open System.IO

let topPath = @"C:\NewDirectory"
let subPath = @"C:\NewDirectory\NewSubDirectory"

try
    Directory.CreateDirectory(subPath) |> ignore

    do
        use writer = File.CreateText(subPath + @"\example.txt")
        writer.WriteLine "content added"

    Directory.Delete(topPath, true)

    let directoryExists = Directory.Exists topPath

    printfn $"top-level directory exists: {directoryExists}"
    
with e ->
    printfn $"The process failed: {e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim topPath = "C:\NewDirectory"
        Dim subPath = "C:\NewDirectory\NewSubDirectory"

        Try
            Directory.CreateDirectory(subPath)

            Using writer As StreamWriter = File.CreateText(subPath + "\example.txt")
                writer.WriteLine("content added")
            End Using

            Directory.Delete(topPath, True)

            Dim directoryExists = Directory.Exists(topPath)

            Console.WriteLine("top-level directory exists: " & directoryExists)
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.Message)
        End Try
    End Sub

End Module

Hinweise

Der path Parameter kann relative oder absolute Pfadinformationen angeben. Relative Pfadinformationen werden relativ zum aktuellen Arbeitsverzeichnis interpretiert. Informationen zum Abrufen des aktuellen Arbeitsverzeichnisses finden Sie unter GetCurrentDirectory.

Nachfolgende Leerzeichen werden vor dem Löschen des Verzeichnisses vom Ende des path Parameters entfernt.

Die Groß-/Kleinschreibung des path Parameters entspricht dem des Dateisystems, auf dem der Code ausgeführt wird. Die Groß-/Kleinschreibung wird z. B. bei NTFS (dem Standardmäßigen Windows-Dateisystem) beachtet und die Groß-/Kleinschreibung auf Linux-Dateisystemen beachtet.

Wenn der recursive Parameter lautet true, muss der Benutzer über Schreibberechtigungen für das aktuelle Verzeichnis sowie für alle Unterverzeichnisse verfügen.

Das Verhalten dieser Methode unterscheidet sich geringfügig beim Löschen eines Verzeichnisses, das einen Analysepunkt enthält, z. B. eine symbolische Verknüpfung oder einen Bereitstellungspunkt. Wenn der Analysepunkt ein Verzeichnis ist, z. B. ein Bereitstellungspunkt, wird er nicht bereitgestellt, und der Bereitstellungspunkt wird gelöscht. Diese Methode rekursiert nicht durch den Analysepunkt. Wenn der Analysepunkt eine symbolische Verknüpfung zu einer Datei ist, wird der Analysepunkt gelöscht und nicht das Ziel der symbolischen Verknüpfung.

Wenn das angegebene Verzeichnis im Datei-Explorer geöffnet ist, ist die Delete Methode möglicherweise nicht in der Lage, es zu löschen.

Weitere Informationen

Gilt für: