Поделиться через


Directory.Delete Метод

Определение

Удаляет заданный каталог и при необходимости все подкаталоги.

Перегрузки

Delete(String)

Удаляет пустой каталог по заданному пути.

Delete(String, Boolean)

Удаляет заданный каталог и, при наличии соответствующей инструкции, все подкаталоги и файлы в нем.

Delete(String)

Исходный код:
Directory.cs
Исходный код:
Directory.cs
Исходный код:
Directory.cs

Удаляет пустой каталог по заданному пути.

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)

Параметры

path
String

Имя пустого каталога, который необходимо удалить. Этот каталог должен поддерживать запись и быть пустым.

Исключения

Файл с тем же именем и расположении, заданном path, уже существует.

-или-

Каталог является текущим рабочим каталогом приложения.

-или-

Каталог, заданный параметром path, не пустой.

-или-

Каталог доступен только для чтения или содержит файл, доступный только для чтения.

-или-

Каталог используется другим процессом.

У вызывающего объекта отсутствует необходимое разрешение.

платформа .NET Framework и .NET Core версий старше 2.1: path строка нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().

path имеет значение null.

Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.

Параметр path не существует или не найден.

-или-

Указан недопустимый путь (например, он ведет на несопоставленный диск).

Примеры

В следующем примере показано, как создать новый каталог и подкаталог, а затем удалить только подкаталог.

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

Комментарии

Этот метод работает так же, как Delete(String, Boolean) и при false использовании указанного для второго параметра.

Параметр path может указывать относительные или абсолютные сведения о пути. Относительные сведения о пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.

Конечные пробелы удаляются из конца path параметра перед удалением каталога.

Этот метод вызывает исключение , IOException если каталог, указанный в параметре path , содержит файлы или подкаталоги.

Чувствительность параметра к регистру path соответствует значению файловой системы, в которой выполняется код. Например, регистр не учитывается в NTFS (файловая система Windows по умолчанию) и учитывает регистр в файловых системах Linux.

В некоторых случаях, если указанный каталог открыт в проводник, Delete метод может не удалить его.

См. также раздел

Применяется к

Delete(String, Boolean)

Исходный код:
Directory.cs
Исходный код:
Directory.cs
Исходный код:
Directory.cs

Удаляет заданный каталог и, при наличии соответствующей инструкции, все подкаталоги и файлы в нем.

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)

Параметры

path
String

Имя каталога, который необходимо удалить.

recursive
Boolean

Значение true позволяет удалить каталоги, подкаталоги и файлы по заданному path, в противном случае — значение false.

Исключения

Файл с тем же именем и расположении, заданном path, уже существует.

-или-

Каталог, заданный параметром path, доступен только для чтения, или recursive имеет значение false и path не является пустым каталогом.

-или-

Каталог является текущим рабочим каталогом приложения.

-или-

Каталог содержит файл только для чтения.

-или-

Каталог используется другим процессом.

У вызывающего объекта отсутствует необходимое разрешение.

платформа .NET Framework и .NET Core версий старше 2.1: path строка нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().

path имеет значение null.

Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.

Параметр path не существует или не найден.

-или-

Указан недопустимый путь (например, он ведет на несопоставленный диск).

Примеры

В следующем примере показано, как создать каталог, подкаталог и файл в подкаталоге, а затем рекурсивно удалить все новые элементы.

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

Комментарии

Параметр path может указывать относительные или абсолютные сведения о пути. Относительные сведения о пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.

Конечные пробелы удаляются из конца path параметра перед удалением каталога.

Чувствительность параметра к регистру path соответствует значению файловой системы, в которой выполняется код. Например, регистр не учитывается в NTFS (файловая система Windows по умолчанию) и учитывает регистр в файловых системах Linux.

recursive Если параметр имеет значение true, пользователь должен иметь разрешение на запись для текущего каталога, а также для всех подкаталогов.

Поведение этого метода немного отличается при удалении каталога, содержащего точку повторного определения, например символьную ссылку или точку подключения. Если точка повторного разбора является каталогом, например точкой подключения, она отключается, а точка подключения удаляется. Этот метод не выполняет повторение через точку повторного просмотра. Если точка повторного измерения является символьной ссылкой на файл, точка повторного измерения удаляется, а не целевой объект символьной ссылки.

В некоторых случаях, если указанный каталог открыт в проводник, Delete метод может не удалить его.

См. также раздел

Применяется к