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 метод может не удалить его.
См. также раздел
- Файловый и потоковый ввод-вывод
- Практическое руководство. Чтение текста из файла
- Практическое руководство. Запись текста в файл