Instruções passo a passo: manipulando arquivos usando métodos do .NET Framework (Visual Basic)
Estas instruções passo a passo demonstram como abrir e ler um arquivo usando a classe StreamReader, verificar se um arquivo está sendo acessado, pesquisar uma cadeia de caracteres dentro de um arquivo lido com uma instância da classe StreamReader e gravar em um arquivo usando a classe StreamWriter.
Observação
Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de 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 Personalizando o IDE.
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 Arquivo, selecione Novo Projeto.
No painel Novo Projeto, clique em Aplicativos do Windows.
Na caixa Nome, digite
MyDiary
e clique em OK.O Visual Studio adiciona o projeto ao Gerenciador de Soluções e o Designer de Formulários do Windows é aberto.
Adicione os controles na tabela a seguir ao formulário e defina os valores correspondentes para as respectivas propriedades.
Objeto | Propriedades | Valor |
---|---|---|
Button | Nome Texto |
Submit Enviar entrada |
Button | Nome Texto |
Clear Limpar entrada |
TextBox | Nome Texto Multilinha |
Entry Digite algo. False |
Gravando no arquivo
Para adicionar a capacidade de gravar em um arquivo por meio do aplicativo, use a classe StreamWriter. StreamWriter foi criado para a saída de caracteres em uma determinada codificação, enquanto a classe Stream foi criada para entrada e saída em bytes. Use StreamWriter para gravar linhas de informações em um arquivo de texto padrão. Para saber mais sobre a classe StreamWriter, veja StreamWriter.
Para adicionar a funcionalidade de gravação
No menu Exibição, escolha Código para abrir o Editor de código.
Como o aplicativo faz referência ao namespace System.IO, adicione as seguintes instruções ao início do seu código, antes da declaração de classe para o formulário, que inicia
Public Class Form1
.Imports System.IO
Antes de gravar no arquivo, você precisa criar uma instância de uma classe StreamWriter.
No menu Exibição, escolha Designer para voltar para o Designer de Formulários do Windows. Clique duas vezes no botão
Submit
para criar um manipulador de eventos Click para o botão e adicione o código a seguir.Dim fw As StreamWriter
Observação
O IDE (ambiente de desenvolvimento integrado) do Visual Studio retornará ao Editor de código e posicionará o ponto de inserção dentro do manipulador de eventos, no qual você deve adicionar o código.
Para gravar o 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 precisa se preocupar se uma exceção será gerada caso o arquivo não seja encontrado, porque ele será criado se 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 de que o usuário não possa 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 este é uma diário, o usuário desejará atribuir uma data a cada entrada. Insira o código a seguir após
fw = New StreamWriter("C:\MyDiary.txt", True)
para definir a variávelToday
como a data atual.Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)
Por fim, anexe o código para limpar a TextBox. Adicione o seguinte código ao evento Click do botão
Clear
.Entry.Text = ""
Adicionando recursos de exibição ao diário
Nesta seção, você adiciona um recurso que exibe a última entrada em DisplayEntry
TextBox. Você também pode adicionar uma ComboBox que exiba várias entradas e a partir da qual um usuário pode selecionar uma entrada para exibir o DisplayEntry
TextBox. Uma instância da classe StreamReader é lida de MyDiary.txt
. Como a classe StreamWriter, o StreamReader deve ser usado com arquivos de texto.
Para esta seção do passo a passo, adicione os controles na tabela a seguir ao formulário e defina os valores correspondentes para as respectivas propriedades.
Control | Propriedades | Valores |
---|---|---|
TextBox | Nome Visível Tamanho Multilinha |
DisplayEntry False 120,60 True |
Button | Nome Texto |
Display Exibição |
Button | Nome Texto |
GetEntries Obter entradas |
ComboBox | Nome Texto Enabled |
PickEntries Selecionar uma entrada False |
Para popular a caixa de combinação
A
PickEntries
ComboBox é usada para exibir as datas em que um usuário envia cada entrada, para que o usuário possa selecionar uma entrada de uma data específica. Crie um identificador de evento Click para o botãoGetEntries
e adicione o seguinte código.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, então, clique em Obter entradas. Clique na seta do menu suspenso no 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 seguinte código.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, então, envie uma entrada. Clique em Obter Entradas, selecione uma entrada da ComboBox e clique em Exibir. Os conteúdos da entrada selecionada são exibidos no
DisplayEntry
TextBox.
Habilitando usuários a excluir ou modificar entradas
Por fim, você pode incluir uma funcionalidade adicional que permite que os usuários excluam ou modifiquem uma entrada usando os botões DeleteEntry
e EditEntry
. Os dois botões permanecem desabilitados a menos que uma entrada seja exibida.
Adicione os controles na tabela a seguir ao formulário e defina os valores correspondentes para as respectivas propriedades.
Control | Propriedades | Valores |
---|---|---|
Button | Nome Texto Enabled |
DeleteEntry Excluir entrada False |
Button | Nome Texto Enabled |
EditEntry Editar entrada False |
Button | Nome Texto Enabled |
SubmitEdit Enviar edição False |
Para habilitar a exclusão e modificação de entradas
Adicione o seguinte código ao evento Click do botão
Display
, depois deDisplayEntry.Text = ReadString
.DeleteEntry.enabled = True
Crie um manipulador de eventos Click para o botão
DeleteEntry
e adicione o seguinte código.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
fica habilitado. Adicione o seguinte código ao evento Click do botãoDisplay
, depois deDisplayEntry.Text = ReadString
.EditEntry.Enabled = True
Crie um manipulador de eventos Click para o botão
EditEntry
e adicione o seguinte código.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = True
Crie um manipulador de eventos Click para o botão
SubmitEdit
e adicione o seguinte códigoDim 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 Obter Entradas, selecione uma entrada e clique em Exibir. A entrada aparece na DisplayEntry
TextBox. Clique em Editar entrada. A entrada aparece na Entry
TextBox. Edite a entrada na Entry
TextBox e clique em Enviar Edição. Abra o arquivo MyDiary.txt
para confirmar a correção. Agora, selecione uma entrada e clique em Excluir entrada. Quando o MessageBox solicita confirmação, clique em OK. Feche o aplicativo e abra MyDiary.txt
para confirmar a exclusão.