Demonstra Passo a passo: Manipulação de arquivos e pastas no Visual Basic

Esta explicação passo a passo fornece uma introdução para os fundamentos de E/S de arquivos no Microsoft Visual Basic 2005.Para ilustrar os recursos, ela cria um pequeno aplicativo, chamado FileExplorer, que examina os arquivos de texto em um diretório e fornece informações, como atributos, última hora de acesso e os primeiros 80 caracteres do arquivo.Ele também inclui uma opção que grava as informações em um arquivo de log.

Observação:

As opções disponíveis na caixas de diálogo, os nomes e os locais dos comandos de menu que você vê, podem diferir das que são descritas na Ajuda dependendo das suas configurações ativas ou versão.Esta página Ajuda foi escrita com Configurações Geral de desenvolvimento em mente.Para alterar as configurações, escolher Importar e exportar configurações on the Ferramentas menu.Para obter mais informações, consulte Configurações do Visual Studio.

Criando o aplicativo

Para iniciar o projeto, crie um formulário no qual os usuários podem selecionar um diretório, selecionar um arquivo do diretório e selecionar as informações que deseja recuperar sobre esse arquivo.

Para criar o projeto

  1. No menu File clique em NewProject.

    A caixa de diálogo New Project será exibida.

  2. No painel Project Types, clique em Visual Basic Projects e clique Windows Application no painel Templates

  3. Na caixa Name, digite FileExplorer para definir o nome do projeto.

    Visual Studio adiciona o projeto para o Solution Explorer e o Windows Forms Designer é aberto.

  4. Adicione os controles na tabela a seguir para o formulário e defina os valores correspondentes para suas propriedades.

    Objeto

    Propriedades

    Valor

    TextBox

    Nome

    Texto

    txtDirectory

    Diretório

    Button

    Nome

    Texto

    btnSubmit

    Enviar

    Button

    Nome

    Texto

    btnExamine

    Examinar

    ComboBox

    Nome

    Texto

    lstFilePick

    Selecione um arquivo

    CheckBox

    Nome

    Texto

    Checked

    chkFileLength

    Comprimento do arquivo

    True

    CheckBox

    Nome

    Texto

    Checked

    chkLastAccess

    Último horário de acesso

    True

    CheckBox

    Nome

    Texto

    Checked

    chkSave

    Salvar resultados

    False

Exibir a pasta atual

O aplicativo FileExplorer precisa de um ponto de partida.Da mesma forma, o txtDirectoryTextBox usa a função My.Computer.FileSystem.CurrentDirectory para retornar e exibir uma sequência de caracteres que representa o caminho atual.

Para retornar o diretório atual

  1. Crie um manipulador de eventos para Form1_Load clicando duas vezes no formulário.

    Code Editor aparece.

  2. Adicione o código a seguir para que o txtDirectoryTextBox exiba a localização atual.

    txtDirectory.Text = My.Computer.FileSystem.CurrentDirectory
    
  3. Execute o programa para verificar se o caminho correto é retornado.

    O txtDirectoryTextBox exibe a pasta atual.

Alterando diretórios

Como um usuário talvez deseje selecionar arquivos em diretório diferentes, o aplicativo usa a mesma propriedade para alternar pastas.Para alterar para um diretório diferente, um usuário insere um novo caminho na caixa txtDirectoryTextBox.

Para alterar pastas

  1. Crie um manipulador de eventos para o btnSubmit clicando duas vezes no controle no formulário.

    Code Editor aparece.

  2. Adicione o seguinte código para o manipulador de eventos do clique.

    Dim NewPath As String
    ' NewPath holds the path the user has entered.
    NewPath = txtDirectory.Text
    ' Change the location to NewPath.
    My.Computer.FileSystem.CurrentDirectory = NewPath
    

Verificando se um caminho válido foi digitado

Use uma declaração Try...Catch para capturar exceções procedentes do envio de um caminho em branco ou inválido.

Para garantir caminhos válidos

  1. No evento btnSubmit_Click, após a linha de código Dim NewPath As String, adicione Dim ErrorMessage As String em uma nova linha.

  2. Antes da linha de código My.Computer.FileSystem.CurrentDirectory = NewPath adicione uma instrução Try em sua própria linha da seguinte maneira.Se você acerta retorno, o Editor de Códigos inserirá automaticamente as instruções Catch ex As Exception e End Try.Remova-as; você adicionará seu próprio código na próxima etapa.

    Try
    
  3. Depois da linha de código My.Computer.FileSystem.CurrentDirectory = NewPath, adicione o seguinte.

        ' This checks to make sure the path is not blank.
    Catch ex As Exception When NewPath = ""
        ErrorMessage = "You must enter a path."
        ' This catches errors caused by a path that is not valid.
    Catch
        ErrorMessage = "You must enter a valid path.  If trying " & _
        "to access a different drive, remember to include the drive " & _
        "letter."
    Finally
        ' Display the error message only if one exists.
        If ErrorMessage <> Nothing Then
            MsgBox(ErrorMessage)
        End If
    End Try
    

Exibir o conteúdo do diretório em um ComboBox

Para ativar a visualização do aplicativo do conteúdo da pasta atual, você pode usar o método My.Computer.FileSystem.GetFiles, que retorna uma coleção de sequências de caracteres que representa os nomes dos arquivos no diretório.Você pode usar caracteres curinga com GetFiles para selecionar apenas os arquivos de um determinado padrão.Nesse exemplo, somente arquivos com a extensão .txt são retornados.

Para exibir o conteúdo do diretório

  1. No início do evento btnSubmit_Click, insira o seguinte.

    Dim fileList As System.Collections.ObjectModel.ReadOnlyCollection(Of String).

  2. Após a linha End Try insira o seguinte.

    fileList = My.Computer.FileSystem.GetFiles( _
        My.Computer.FileSystem.CurrentDirectory, _
        FileIO.SearchOption.SearchTopLevelOnly, "*.txt")
    For Each foundFile As String In fileList
        lstFilePick.Items.Add(foundFile)
    Next
    

    As informações coletadas aparecem no lstFilePickComboBox, da qual você pode escolher um arquivo específico para examinar.

Teste o aplicativo executando-o pela primeira vez um diretório que contenha arquivos .txt e, em seguida, em um que contenha mais de um arquivo .txt.Na primeira instância, o aplicativo exibirá a mensagem de erro apropriada.Na segunda, o aplicativo cria uma lista na caixa ComboBox de todos os arquivos .txt no diretório especificado no txtDirectoryTextBox.

Ativar um usuário para selecionar um arquivo em Examine

Embora o lstFilePickComboBox exiba todos os arquivos em uma pasta, um usuário provavelmente deseja selecionar e examinar um arquivo específico.

Para ativar a seleção de um arquivo específico

  • Crie um manipulador de eventos para btnExamine_Click e adicione o seguinte código para confirmar seleção de um arquivo.

    Dim thisFile As System.IO.FileInfo
    thisFile = My.Computer.FileSystem.GetFileInfo(CStr(lstFilePick.SelectedItem))
    

Habilitando um usuário para determinar que informações recolher

Agora que os arquivos exibidos na caixa lstFilePickComboBox, código adicional permite que um usuário especifique as informações relatadas.Por exemplo, um usuário pode simplesmente desejar saber a data quando o arquivo foi acessado pela última vez.Outro usuário também pode desejar saber tamanho de um arquivo.Um usuário seleciona ou desmarca caixas de seleção (chkLastAccess, chkFileLength) para personalizar os resultados

Para exibir informações específicas

  1. Declare essas variáveis no início do evento btnExamine_Click após (lstFilePick.SelectedItem).

    Dim stringlength As String
    stringLength = "The file's length, in bytes, is: "
    Dim stringLastAccess As String
    stringLastAccess = "The file was last accessed on: "
    Dim LastAccess As Date
    Dim Length As Long
    Dim FirstLine As String = ""
    Dim FinalString As String = ""
    Dim NewName As String
    NewName = CType(lstFilePick.SelectedItem, String)
    
    If NewName = Nothing Then
        MsgBox("You must select a file to examine.")
        Exit Sub
    End If
    

    O método My.Computer.FileSystem.GetFileInfo retorna um objeto FileInfo que pode ser consultado para obter informações sobre um arquivo.

  2. Adicione o seguinte código ao final do evento btnExamine_Click.

    ' Check last access time.
    If chkLastAccess.Checked = True Then
        LastAccess = thisFile.LastAccessTime
    End If
    

A propriedade LastAccessTime determina a última vez em que o arquivo foi acessado.O valor retornado em Date indica a data e hora de quando o arquivo foi criado ou sua última modificação.

  1. Adicione o seguinte código ao final do evento btnExamine_Click.

    ' Check Length.
    If chkFileLength.Checked = True Then
        Length = thisFile.Length
    End If
    

A propriedade Length, que determina o tamanho do arquivo, retorna um valor Long especificando o comprimento do arquivo em bytes.

Exibir os resultados

Para concluir a funcionalidade do aplicativo, um MsgBox retorna as informações obtidas.

Para exibir os resultados

  1. No final da instrução If que determina se ou não a chkLastAccessCheckBox foi selecionada, adicione o seguinte End If antes do final.

    ' Add to the messagebox.
    FinalString = FinalString & stringLastAccess & LastAccess & "." _
    & vbCrLf
    
  2. No final da instrução If que determina se ou não a chkFileLengthCheckBox foi selecionada, adicione o seguinte End If antes do final.

    ' Add to the messagebox.
    FinalString = FinalString & stringlength & CStr(Length) & "." _
    & vbCrLf
    
  3. No final da instrução If que determina se ou não a chkFirstLineCheckBox foi selecionada, adicione o seguinte End If antes do final.

    ' Add to the messagebox.
    FinalString &= FirstLine & vbCrLf
    

Salvando os resultados

Um usuário talvez queira salvar os resultados de uma verificação de um arquivo.Da mesma forma, adicione o código que verifica se um arquivo de log existe, crie um, se necessário, e grave os resultados para o arquivo de log.

Para criar um arquivo de log

  • Adicione o seguinte código ao final do evento btnExamine_Click.

    ' Check to see if results should be saved.
    If chkSave.Checked = True And FinalString <> "" Then
        My.Computer.FileSystem.WriteAllText("log.txt", FinalString, True)
    End If
    

Para testar o aplicativo

  1. No Diretório de sua escolha, crie um arquivo de texto chamado test.txt com a primeira linha a seguir:

    "Esta é a primeira linha do primeiro arquivo.O aplicativo FileExplorer examina somente arquivos de texto".

  2. No mesmo diretório, crie um segundo arquivo de texto chamado test2.txt com a primeira linha a seguir:

    "Está é a primeira linha do segundo arquivo.O aplicativo FileExplorer examina somente arquivos de texto".

  3. Inicie o aplicativo.

  4. Digite um caminho inválido e clique em Submit.

    A seguinte mensagem será exibida: "Insira um caminho válido.If trying to access a different drive, remember to include the drive letter."

  5. Digite o caminho para o diretório que armazena Test.txt e clique em Submit.

    O lstFilePickComboBox exibe os arquivos de texto.

  6. Selecione Test.txt na lstFilePickComboBox.Certifique-se de que todas as caixas de seleção estiverem selecionadas e em seguida, clique em Examine.

    O formulário de resultados inclui a última data de acesso e o comprimento.

  7. Selecione Test2.txt na caixa lstFilePickComboBox, desmarque todas as caixas de seleção e em seguida, clique em Examine.

    A seguinte mensagem de erro aparece: Caixas de "nenhum arquivo de atributo seleção selecionadas."

  8. Selecione Last Access e Save Results. e clique em Examine

    O formulário de resultados exibe somente a última vez acesso.

  9. Feche o FileExplorer.

    Porque você selecionou a opção Save Results, o FileExplorer gera um arquivo de log chamado log.txt no mesmo diretório dos arquivos de texto.

Para verificar o log

  • No diretório atual, abra log.txt e confirme se FileExplorer gravou as informações corretas.

Consulte também

Referência

Propriedade My.Computer.FileSystem.CurrentDirectory

Método My.Computer.FileSystem.GetFileInfo