Demonstra Passo a passo: Manipular arquivos usando.NET Framework métodos (Visual Basic)
Essa explicação passo a passo demonstra como abrir e ler um arquivo usando a classe StreamReader, verificar para ver se um arquivo está sendo acessado, procurar uma sequência de caracteres dentro de uma leitura de arquivo com uma instância da classe StreamReader e escrever para um arquivo usando a classe StreamWriter.
Observação |
---|
Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações do Visual Studio. |
Criando o aplicativo
Inicie o Visual Studio e comece o projeto, criando um formulário que o usuário pode usar para gravar no arquivo designado.
Para criar o projeto
No menu File, selecione New Project.
No painel New Project, clique em Windows Application.
Na caixa Name digite MyDiary e clique OK.
Visual Studio adiciona o projeto para o Solution Explorer, e abre o Windows Forms Designer.
Adicione os controles na tabela a seguir para o formulário e defina os valores correspondentes para suas propriedades.
Object |
Propriedades |
Valor |
Nome Texto |
Enviar Enviar entrada |
|
Nome Texto |
Limpar Limpar entrada |
|
Nome Texto Multiline (de múltiplas linhas) |
Entrada Digite alguma coisa. False |
Gravando no arquivo
Para adicionar a capacidade de gravar em um arquivo por meio do aplicativo, use o StreamWriter classe. StreamWriterdestina-se a saída de caractere em uma codificação específica, enquanto o Stream classe é projetada para bytes de entrada e saída. Use StreamWriter para gravar linhas de informações em um padrão arquivo de texto. Para obter mais informações sobre o StreamWriter da classe, consulte StreamWriter.
Para adicionar a funcionalidade da gravação
No menu View, escolha Code para abrir o Editor de Código.
Como o aplicativo se refere ao namespaceSystem.IO, adicione as instruções a seguir ao início do seu código, antes da declaração de classe para o formulário, que inicia Public Class Form1.
Imports System Imports System.IO
Antes de gravar no arquivo, você deve criar uma instância de uma classe StreamWriter.
Do menu View, escolha Designer para retornar ao Windows Forms Designer. Clique duas vezes no botão Submit para criar um manipulador de eventos Click para o botão e em seguida, adicione o código a seguir.
Dim fw As StreamWriter
Observação |
---|
O Visual Studio Integrated Development Environment (IDE) retorna para o editor de códigos e posiciona o ponto de inserção com o manipulador de eventos, onde você deve adicionar o código. |
Para escrever no arquivo, use o método Write da classe StreamWriter. Adicione o código a seguir diretamente após Dim fw As StreamWriter. Você não precisará se preocupar com que uma exceção será ser gerada se o arquivo não for encontrado, porque ele vai ser criado se ele ainda não existir.
Dim ReadString As String Try 'Pass the file path and name to the StreamWriter constructor. 'Indicate that Append is True, so file will not be overwritten. fw = New StreamWriter("C:\MyDiary.txt", True) ReadString = Entry.Text fw.WriteLine(ReadString) Finally 'Close the file. fw.Close() End Try
Certifique-se que o usuário não pode enviar uma entrada em branco adicionando o código a seguir diretamente após Dim ReadString As String.
If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then Entry.Text = "Please enter something." Return End If
Como isto é uma diário, o usuário desejará atribuir uma data para cada entrada. Insira o código a seguir após fw = New StreamWriter("C:\MyDiary.txt", True) para definir a variável Today como a data atual.
Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)
Finalmente, anexe o código para limpar a TextBox. Adicione o seguinte código para o botão Clear do evento Click.
Entry.Text = ""
Adicionar recursos de exibição ao Diário
Nesta seção, você adiciona um recurso que exibe a entrada mais recente em DisplayEntry TextBox. Você também pode adicionar um ComboBox que exibe várias entradas e na qual um usuário pode selecionar uma entrada para exibir em DisplayEntry TextBox. Uma instância da classe StreamReader lê de MyDiary.txt. Como a classe StreamWriter, StreamReader destina-se ao uso com arquivos de texto.
Para essa seção de explicação passo a passo, adicione os controles na tabela a seguir para o formulário e defina os valores correspondentes para suas propriedades.
Controle |
Propriedades |
Valores |
---|---|---|
Nome Visible Tamanho Multiline (de múltiplas linhas) |
DisplayEntry False 120,60 True |
|
Nome Texto |
Exibir Exibir |
|
Nome Texto |
GetEntries Obter entradas |
|
Nome Texto Enabled |
PickEntries Selecione uma entrada False |
Para preencher a combo box
O PickEntries ComboBox é usado para exibir as datas em que um usuário envia cada entrada, para que o usuário possa selecionar uma entrada a partir de uma data específica. Crie um manipulador de eventos Click para o botão GetEntries e adicione o código a seguir.
Dim fr As StreamReader = Nothing Dim FileString As String FileString = "" Try fr = New System.IO.StreamReader("C:\MyDiary.txt") PickEntries.Items.Clear() PickEntries.Enabled = True Do FileString = fr.ReadLine If IsDate(FileString) Then PickEntries.Items.Add(FileString) End If Loop Until (FileString Is Nothing) Finally If fr IsNot Nothing Then fr.Close() End If End Try PickEntries.Enabled = True
Para testar seu código, pressione F5 para compilar o aplicativo e clique Get Entries. Clique na seta suspensa em ComboBox para exibir as datas de entrada.
Para escolher e exibir entradas individuais
Crie um manipulador de eventos Click para o botão Display e adicione o código a seguir.
Dim fr As StreamReader Dim ReadString As String 'Make sure ReadString begins empty. ReadString = "" Dim FileString As String fr = New StreamReader("C:\MyDiary.txt") 'If no entry has been selected, show the whole file. If PickEntries.Enabled = False Or PickEntries.SelectedText Is Nothing Then Do 'Read a line from the file into FileString. FileString = fr.ReadLine 'add it to ReadString ReadString = ReadString & ControlChars.CrLf & FileString Loop Until (FileString = Nothing) Else 'An entry has been selected, find the line that matches. Do FileString = fr.ReadLine Loop Until FileString = CStr(PickEntries.SelectedItem) FileString = CStr(PickEntries.SelectedItem) & ControlChars.CrLf ReadString = FileString & fr.ReadLine 'Read from the file until EOF or another Date is found. Do Until ((fr.Peek < 0) Or (IsDate(fr.ReadLine))) ReadString = ReadString & fr.ReadLine Loop End If fr.Close() DisplayEntry.Visible = True DisplayEntry.Text = ReadString
Para testar seu código, pressione F5 para compilar o aplicativo e depois envie uma entrada. Clique em Get Entries, selecione uma entrada de ComboBox, e então clique Display. O conteúdo da entrada selecionada aparece em DisplayEntry TextBox.
Habilitando usuários para excluir ou modificar entradas
Finalmente, você pode incluir funcionalidade adicional permitindo aos usuários excluir ou modificar uma entrada, utilizando os botões DeleteEntry e EditEntry. Os dois botões permanecem desativados a menos que uma entrada seja exibida.
Adicione os controles na tabela a seguir para o formulário e defina os valores correspondentes para suas propriedades.
Controle |
Propriedades |
Valores |
---|---|---|
Nome Texto Enabled |
DeleteEntry Excluir entrada False |
|
Nome Texto Enabled |
EditEntry Editar entrada False |
|
Nome Texto Enabled |
SubmitEdit Enviar editar False |
Para permitir a exclusão e modificação de entradas
Adicione o seguinte código para o botão Display do evento Click, depois de DisplayEntry.Text = ReadString.
DeleteEntry.enabled = True
Crie um manipulador de eventos Click para o botão DeleteEntry e adicione o código a seguir.
Dim fr As StreamReader Dim ReadString As String Dim WriteString As String Dim ConfirmDelete As MsgBoxResult fr = New StreamReader("C:\MyDiary.txt") ReadString = fr.ReadLine ' Read through the textfile Do Until (fr.Peek < 0) ReadString = ReadString & vbCrLf & fr.ReadLine Loop WriteString = Replace(ReadString, DisplayEntry.Text, "") fr.Close() ' Check to make sure the user wishes to delete the entry ConfirmDelete = MsgBox("Do you really wish to delete this entry?", MsgBoxStyle.OKCancel) If ConfirmDelete = MsgBoxResult.OK Then File.Delete("C:\MyDiary.txt") Dim fw As StreamWriter = File.CreateText("C:\MyDiary.txt") fw.WriteLine(WriteString) fw.Close() ' Reset controls on the form DisplayEntry.Text = "" PickEntries.Text = "" PickEntries.Items.Clear() PickEntries.Enabled = False DeleteEntry.Enabled = False End If
Quando um usuário exibe uma entrada, o botão EditEntry se torna ativado. Adicione o seguinte código para o evento Click do botão Display, depois de DisplayEntry.Text = ReadString.
EditEntry.Enabled = True
Crie um manipulador de eventos Click para o botão EditEntry e adicione o código a seguir.
Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = True
Crie um manipulador de eventos Click para o botão SubmitEdit e adicione o código a seguir.
Dim fr As StreamReader Dim ReadString As String Dim WriteString As String If Entry.Text = "" Then MsgBox("Use Delete to Delete an Entry") Return End If fr = New StreamReader("C:\MyDiary.txt") ReadString = fr.ReadLine Do Until (fr.Peek < 0) ReadString = ReadString & vbCrLf & fr.ReadLine Loop WriteString = Replace(ReadString, DisplayEntry.Text, Entry.Text) fr.Close() File.Delete("C:\MyDiary.txt") Dim fw As StreamWriter = File.CreateText("C:\MyDiary.txt") fw.WriteLine(WriteString) fw.Close() DisplayEntry.Text = Entry.Text Entry.Text = "" EditEntry.Enabled = False SubmitEdit.Enabled = False
Para testar seu código, pressione F5 para compilar o aplicativo. Clique em Get Entries, selecione uma entrada e clique Display. A entrada aparece em DisplayEntry TextBox. Clique em Edit Entry. A entrada aparece em Entry TextBox. Edite a entrada na caixa Entry TextBox e clique em Submit Edit . Abra o arquivo MyDiary.txt para confirmar a correção. Agora, selecione uma entrada e clique em Delete Entry. Quando o MessageBox solicita confirmação, clique em OK . Feche o aplicativo e abra MyDiary.txt para confirmar a exclusão.