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
No menu File clique em NewProject.
A caixa de diálogo New Project será exibida.
No painel Project Types, clique em Visual Basic Projects e clique Windows Application no painel Templates
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.
Adicione os controles na tabela a seguir para o formulário e defina os valores correspondentes para suas propriedades.
Objeto
Propriedades
Valor
Nome
Texto
txtDirectory
Diretório
Nome
Texto
btnSubmit
Enviar
Nome
Texto
btnExamine
Examinar
Nome
Texto
lstFilePick
Selecione um arquivo
Nome
Texto
Checked
chkFileLength
Comprimento do arquivo
True
Nome
Texto
Checked
chkLastAccess
Último horário de acesso
True
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
Crie um manipulador de eventos para Form1_Load clicando duas vezes no formulário.
Code Editor aparece.
Adicione o código a seguir para que o txtDirectoryTextBox exiba a localização atual.
txtDirectory.Text = My.Computer.FileSystem.CurrentDirectory
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
Crie um manipulador de eventos para o btnSubmit clicando duas vezes no controle no formulário.
Code Editor aparece.
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
No evento btnSubmit_Click, após a linha de código Dim NewPath As String, adicione Dim ErrorMessage As String em uma nova linha.
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
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
No início do evento btnSubmit_Click, insira o seguinte.
Dim fileList As System.Collections.ObjectModel.ReadOnlyCollection(Of String).
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
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.
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.
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
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
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
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
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".
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".
Inicie o aplicativo.
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."
Digite o caminho para o diretório que armazena Test.txt e clique em Submit.
O lstFilePickComboBox exibe os arquivos de texto.
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.
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."
Selecione Last Access e Save Results. e clique em Examine
O formulário de resultados exibe somente a última vez acesso.
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.