VB .NET - Enviando arquivos e diretórios para a lixeira


 Hoje temos uma dica básica usando a linguagem VB .NET que mostra como deletar arquivos e diretórios enviando-o para a lixeira do windows (recycle bin).

 

Para excluir um arquivo no Visual Basic podemos usar os recursos do namespace Microsoft.VisualBasic que contêm classes que oferecem suporte à compilação e à geração de código usando a linguagem Visual Basic.

 

Os namespaces filhos contêm tipos que fornecem serviços ao compilador do Visual Basic e tipos que incluem suporte a modelo de aplicativo do Visual Basic, My namespace, expressões lambda e conversão de códigos.

 

Dentre os namespaces filhos destacamos :

 

  1. Microsoft.VisualBasic - contém tipos que oferecem suporte ao runtime do Visual Basic no Visual Basic;

  2. Microsoft.VisualBasic.MyServices - contém tipos que oferecem suporte ao recurso My no Visual Basic;

  3. Microsoft.VisualBasic.Logging -  contém tipos que oferecem suporte aos objetos de logging no recurso My e fornece um ouvinte de log simples que direciona a saída para o arquivo de log;

  4. Microsoft.VisualBasic.FileIO - contém tipos que oferecem suporte ao objeto FileSystem no recurso My no Visual Basic;

Deletar Arquivo

 

O método DeleteFile do objeto My.Computer.FileSystem permite que você exclua um arquivo.

A sintaxe usada é :

Public Shared Sub DeleteFile ( file As String, showUI As UIOption, recycle As RecycleOption, onUserCancel As UICancelOption)

Entre as opções que ele oferece temos:

Deletar Diretório

 

Para excluir um diretório basta usar o método DeleteDirectory do objeto My.Computer.FileSystem que utiliza as mesmas opções e tem a seguinte sintaxe :

 

Public Shared Sub DeleteDirectory ( directory As String, showUI As UIOption, recycle As RecycleOption, onUserCancel As UICancelOption )

 

Neste artigo eu vou criar um projeto Windows Forms usando a linguagem VB .NET para excluir arquivos e diretórios usando os métodos DeleteFile e DeleteDirectory.

 

Recursos Usados:

Criando o projeto no Visual Studio Express 2013

A primeira coisa que vamos fazer é criar um novo projeto no Visual Studio Express 2013 for windows desktop com o nome de DeletarArquivos_Lixeira, o template Windows Forms Application e a linguagem VB .NET:

Será criado um projeto com um formulário form1.vb. Vamos incluir a partir da ToolBox os seguintes controles no formulário:

Disponha os controles conforme o leiaute da figura abaixo:

 

 

Funciona assim:

 

O usuário informa o nome do arquivo ou do diretório que deseja excluir e marca a opção enviar para a lixeira se desejar enviar para a lixeira do windows.

 

Para executar a operação basta clicar no botão de comando - Enviar arquivo/diretório para a lixeira.

 

Implementando o código

 

Os namespaces usados no projeto e declarados no início do formulário form1.vb são:

 

Imports Microsoft.VisualBasic.FileIO

Imports System.IO

Imports System.Security

 

Código do evento Click do botão de comando que irá efetuar a exclusão do arquivo ou diretório:

 

Private Sub btnEnviarParaLixeira_Click(sender As Object, e As EventArgs) Handles btnEnviarParaLixeira.Click

         Dim arquivoDiretorioDeletar As String = ""
       
         If Not txtArquivoPasta.Text = String.Empty Then
            arquivoDiretorioDeletar = txtArquivoPasta.Text
        Else
            MessageBox.Show("Informe um arquivo ou diretório a excluir...", "Deletar", MessageBoxButtons.OK, MessageBoxIcon.Information)
            txtArquivoPasta.Focus()
        End If

       
        Try
            'verifica se é arquivo ou diretorio
            If IsDiretorio(arquivoDiretorioDeletar) Then
                If Directory.Exists(arquivoDiretorioDeletar) Then
                    EnviarDiretorioParaLixeira(arquivoDiretorioDeletar)
                End If
            Else
                If File.Exists(arquivoDiretorioDeletar) Then
                    EnviarArquivoParaLixeira(arquivoDiretorioDeletar)
                End If
            End If
            MessageBox.Show("Operação realizada com sucesso...", "Deletar", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Catch ptlex As PathTooLongException
            MessageBox.Show("Erro : Caminho muito longo - " & ptlex.Message, "Deletar", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Catch fnfex As FileNotFoundException
            MessageBox.Show("Erro : Arquivo não encontrado - " & fnfex.Message, "Deletar", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Catch secex As SecurityException
            MessageBox.Show("Erro : Sem permissão de acesso - " & secex.Message, "Deletar", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Catch ioex As IOException
            MessageBox.Show("Erro : Arquivo em uso  - " & ioex.Message, "Deletar", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Catch ex As Exception
            MessageBox.Show("Erro : " & ex.Message, "Deletar", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

 

Este código utiliza as seguintes rotinas :

 

1- Método IsDiretorio() para verificar se o que o usuário informou é um arquivo ou um diretório. O código desta função é dado a seguir:

 

    Public Function IsDiretorio(path As String) As Boolean
        Try
            Return ((File.GetAttributes(path) And FileAttributes.Directory) = FileAttributes.Directory)
        Catch ex As Exception
            Throw
        End Try
    End Function

 

Neste código estou usando o método GetAttributes() para obter o atributo do recurso informado e verificamos se o mesmo é um diretório retornado True.

 

2- Método EnviarArquivoParaLixeira() deleta um arquivo e o envia para a lixeira conforme a opção do usuário :

 

  Private Sub EnviarArquivoParaLixeira(recurso As String)
        Try
            If chkLixeira.Checked = True Then
                My.Computer.FileSystem.DeleteFile(recurso,
                                                  UIOption.AllDialogs,
                                                  RecycleOption.SendToRecycleBin)
            Else
                My.Computer.FileSystem.DeleteFile(recurso,
                                                  UIOption.AllDialogs,
                                                  RecycleOption.DeletePermanently,
                                                  UICancelOption.DoNothing)
            End If
        Catch ex As Exception
            Throw
        End Try
    End Sub

 

3- Método EnviarDiretorioParaLixeira() deleta um diretório e o envia para a lixeira conforme a opção do usuário :

 

Private Sub EnviarDiretorioParaLixeira(recurso As String)
        Try
            If chkLixeira.Checked = True Then
                My.Computer.FileSystem.DeleteDirectory(recurso,
                                                  UIOption.AllDialogs,
                                                  RecycleOption.SendToRecycleBin)
            Else
                My.Computer.FileSystem.DeleteDirectory(recurso,
                                                  UIOption.AllDialogs,
                                                  RecycleOption.DeletePermanently,
                                                  UICancelOption.DoNothing)
            End If
        Catch ex As Exception
            Throw
        End Try
    End Sub

 

Executando o projeto e informando um recurso a excluir obtemos o seguinte resultado:

 

 

Verificando a lixeira do Windows podemos constatar que o diretório informado foi deletado e esta na lixeira :

 

 

Pegue projeto completo aqui:  DeletarArquivos_Lixeira.zip
 

Vede quão grande amor nos tem concedido o Pai, que fôssemos chamados filhos de Deus. Por isso o mundo não nos conhece; porque não o conhece a ele.
1 João 3:1

 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti