Directory.Delete Método

Definição

Apaga um diretório especificado e, opcionalmente, quaisquer subdiretórios.

Sobrecargas

Name Description
Delete(String)

Apaga um diretório vazio de um caminho especificado.

Delete(String, Boolean)

Elimina o diretório especificado e, se indicado, quaisquer subdiretórios e ficheiros no diretório.

Delete(String)

Apaga um diretório vazio de um caminho especificado.

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)

Parâmetros

path
String

O nome do diretório vazio a remover. Este diretório deve ser escritável e vazio.

Exceções

Existe um ficheiro com o mesmo nome e localização especificados por path .

-ou-

O diretório é o diretório de trabalho atual da aplicação.

-ou-

O diretório especificado por path não está vazio.

-ou-

O diretório é apenas de leitura ou contém um ficheiro só de leitura.

-ou-

O diretório está a ser usado por outro processo.

O interlocutor não tem a permissão necessária.

.NET Framework e .NET Core versões anteriores à 2.1: path é uma cadeia de comprimento zero, contém apenas espaço em branco ou contém um ou mais caracteres inválidos. Pode consultar caracteres inválidos usando o GetInvalidPathChars() método.

path é null.

O caminho especificado, nome do ficheiro ou ambos excedem o comprimento máximo definido pelo sistema.

path não existe ou não pôde ser encontrado.

-ou-

O caminho especificado é inválido (por exemplo, está num disco não mapeado).

Exemplos

O exemplo seguinte mostra como criar um novo diretório e subdiretório, e depois eliminar apenas o subdiretório.

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

Observações

Este método comporta-se de forma idêntica a Delete(String, Boolean) com false especificado para o segundo parâmetro.

O path parâmetro pode especificar informação relativa ou absoluta do caminho. A informação relativa do caminho é interpretada como relativa ao diretório de trabalho atual. Para obter o diretório de trabalho atual, veja GetCurrentDirectory.

Os espaços finais são removidos do final do path parâmetro antes de eliminar o diretório.

Este método gera um IOException se o diretório especificado no path parâmetro contém ficheiros ou subdiretórios.

A sensibilidade a maiúsculas e minúsculas do path parâmetro corresponde à do sistema de ficheiros onde o código está a correr. Por exemplo, é insensível a maiúsculas minúsculas no NTFS (o sistema de ficheiros padrão do Windows) e sensível a maiúsculas minúsculas em sistemas de ficheiros Linux.

Em alguns casos, se tiver o diretório especificado aberto no Explorador de Ficheiros, o Delete método pode não conseguir apagá-lo.

Ver também

Aplica-se a

Delete(String, Boolean)

Elimina o diretório especificado e, se indicado, quaisquer subdiretórios e ficheiros no diretório.

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)

Parâmetros

path
String

O nome do diretório a remover.

recursive
Boolean

true para remover diretórios, subdiretórios e ficheiros em path; caso contrário, false.

Exceções

Existe um ficheiro com o mesmo nome e localização especificados por path .

-ou-

O diretório especificado por path é apenas leitura, ou seja recursive , é false e path não é um diretório vazio.

-ou-

O diretório é o diretório de trabalho atual da aplicação.

-ou-

O diretório contém um ficheiro apenas de leitura.

-ou-

O diretório está a ser usado por outro processo.

O interlocutor não tem a permissão necessária.

.NET Framework e .NET Core versões anteriores à 2.1: path é uma cadeia de comprimento zero, contém apenas espaço em branco ou contém um ou mais caracteres inválidos. Pode consultar caracteres inválidos usando o GetInvalidPathChars() método.

path é null.

O caminho especificado, nome do ficheiro ou ambos excedem o comprimento máximo definido pelo sistema.

path não existe ou não pôde ser encontrado.

-ou-

O caminho especificado é inválido (por exemplo, está num disco não mapeado).

Exemplos

O exemplo seguinte mostra como criar um novo diretório, subdiretório e ficheiro no subdiretório, e depois eliminar recursivamente todos os novos itens.

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

Observações

O path parâmetro pode especificar informação relativa ou absoluta do caminho. A informação relativa do caminho é interpretada como relativa ao diretório de trabalho atual. Para obter o diretório de trabalho atual, veja GetCurrentDirectory.

Os espaços finais são removidos do final do path parâmetro antes de eliminar o diretório.

A sensibilidade a maiúsculas e minúsculas do path parâmetro corresponde à do sistema de ficheiros onde o código está a correr. Por exemplo, é insensível a maiúsculas minúsculas no NTFS (o sistema de ficheiros padrão do Windows) e sensível a maiúsculas minúsculas em sistemas de ficheiros Linux.

Se o recursive parâmetro for true, o utilizador deve ter permissão de escrita para o diretório atual, bem como para todos os subdiretórios.

O comportamento deste método difere ligeiramente ao eliminar um diretório que contém um ponto de reparse, como um link simbólico ou um ponto de montagem. Se o ponto de reparação for um diretório, como um ponto de montagem, este é desmontado e o ponto de montagem é eliminado. Este método não recorre através do ponto de reparse. Se o ponto de análise for uma ligação simbólica para um ficheiro, o ponto de análise é eliminado e não o destino da ligação simbólica.

Em alguns casos, se tiver o diretório especificado aberto no Explorador de Ficheiros, o Delete método pode não conseguir apagá-lo.

Ver também

Aplica-se a