Compartilhar via


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çãoObservaçã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

  1. No menu File, selecione New Project.

  2. No painel New Project, clique em Windows Application.

  3. Na caixa Name digite MyDiary e clique OK.

    Visual Studio adiciona o projeto para o Solution Explorer, e abre o Windows Forms Designer.

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

Object

Propriedades

Valor

Button

Nome

Texto

Enviar

Enviar entrada

Button

Nome

Texto

Limpar

Limpar entrada

TextBox

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

  1. No menu View, escolha Code para abrir o Editor de Código.

  2. 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.

  3. 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çãoObservaçã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.

  1. 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
    
  2. 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
    
  3. 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)
    
  4. 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

TextBox

Nome

Visible

Tamanho

Multiline (de múltiplas linhas)

DisplayEntry

False

120,60

True

Button

Nome

Texto

Exibir

Exibir

Button

Nome

Texto

GetEntries

Obter entradas

ComboBox

Nome

Texto

Enabled

PickEntries

Selecione uma entrada

False

Para preencher a combo box

  1. 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
    
  2. 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

  1. 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
    
  2. 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

Button

Nome

Texto

Enabled

DeleteEntry

Excluir entrada

False

Button

Nome

Texto

Enabled

EditEntry

Editar entrada

False

Button

Nome

Texto

Enabled

SubmitEdit

Enviar editar

False

Para permitir a exclusão e modificação de entradas

  1. Adicione o seguinte código para o botão Display do evento Click, depois de DisplayEntry.Text = ReadString.

    DeleteEntry.enabled = True
    
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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.

Consulte também

Referência

StreamReader

StreamWriter

Outros recursos

Explicações passo a passo da linguagem Visual Basic