Directory.Delete Methode

Definition

Löscht ein angegebenes Verzeichnis und optional alle Unterverzeichnisse.

Überlädt

Delete(String)

Löscht ein leeres Verzeichnis aus einem angegebenen Pfad.

Delete(String, Boolean)

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

Delete(String)

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 gibt eine Datei, die denselben Namen und Speicherort hat wie in path angegeben.

- oder -

Das Verzeichnis ist das aktuelle Arbeitsverzeichnis der Anwendung.

- oder -

Das durch path angegebene 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 älter als 2.1: path ist eine Zeichenfolge der Länge null, enthält nur Leerzeichen oder enthält ein oder mehrere ungültige Zeichen. Sie können Abfragen für ungültige Zeichen mithilfe der GetInvalidPathChars()-Methode ausführen.

path ist null.

Der angegebene Pfad und/oder Dateiname überschreiten die vom System definierte maximale Länge.

path ist nicht vorhanden oder wurde nicht gefunden.

- oder -

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

Beispiele

Das folgende Beispiel zeigt, wie Sie ein neues Verzeichnis und ein neues 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 mit dem Delete(String, Boolean)false für den zweiten Parameter angegebenen.

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 am Ende des path Parameters entfernt, bevor das Verzeichnis gelöscht wird.

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

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

Wenn das angegebene Verzeichnis in Explorer geöffnet ist, kann die Delete Methode es in einigen Fällen möglicherweise nicht löschen.

Weitere Informationen

Gilt für:

Delete(String, Boolean)

Löscht das angegebene Verzeichnis und, sofern angegeben, 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 gibt eine Datei, die denselben Namen und Speicherort hat wie in path angegeben.

- oder -

Das von path angegebene Verzeichnis ist schreibgeschützt, oder recursive ist false, und path ist kein leeres Verzeichnis.

- 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 älter als 2.1: path ist eine Zeichenfolge der Länge null, enthält nur Leerzeichen oder enthält ein oder mehrere ungültige Zeichen. Sie können Abfragen für ungültige Zeichen mithilfe der GetInvalidPathChars()-Methode ausführen.

path ist null.

Der angegebene Pfad und/oder Dateiname überschreiten die vom System definierte maximale Länge.

path ist nicht vorhanden oder wurde nicht gefunden.

- oder -

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

Beispiele

Das folgende Beispiel zeigt, wie Sie ein neues Verzeichnis, ein neues 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 am Ende des path Parameters entfernt, bevor das Verzeichnis gelöscht wird.

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

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

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

Wenn das angegebene Verzeichnis in Explorer geöffnet ist, kann die Delete Methode es in einigen Fällen möglicherweise nicht löschen.

Weitere Informationen

Gilt für: