Passo a passo: Manipulando arquivos usando métodos do .NET Framework (Visual Basic)

Este passo a passo demonstra como abrir e ler um arquivo usando a StreamReader classe, verificar se um arquivo está sendo acessado, procurar uma cadeia de caracteres dentro de um arquivo lido com uma instância da StreamReader classe e gravar em um arquivo usando a StreamWriter classe.

Nota

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ê tem 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

  1. No menu Arquivo, selecione Novo Projeto.

  2. No painel Novo Projeto, clique em Aplicativo do Windows.

  3. Na caixa Nome, digite MyDiary e clique em OK.

    O Visual Studio adiciona o projeto ao Gerenciador de Soluções e o Windows Forms Designer é aberto.

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

Objeto Propriedades Valor
Button Nome

Texto
Submit

Submeter Entrada
Button Nome

Texto
Clear

Limpar entrada
TextBox Nome

Texto

Multilinha
Entry

Por favor, insira algo.

False

Gravando no arquivo

Para adicionar a capacidade de gravar em um arquivo através do aplicativo, use a StreamWriter classe. StreamWriter é projetado para saída de caracteres em uma codificação específica, enquanto a Stream classe é projetada para entrada e saída de bytes. Use StreamWriter para escrever linhas de informação em um arquivo de texto padrão. Para obter mais informações sobre a StreamWriter classe, consulte StreamWriter.

Para adicionar a funcionalidade de escrita

  1. No menu Exibir, escolha Código para abrir o Editor de Códigos.

  2. Como o aplicativo faz referência ao System.IO namespace, adicione as seguintes instruções no início do código, antes da declaração de classe para o formulário, que começa Public Class Form1.

    Imports System.IO
    

    Antes de gravar no arquivo, você deve criar uma instância de uma StreamWriter classe.

  3. No menu Exibir, escolha Designer para retornar ao Windows Forms Designer. Clique duas vezes no Submit botão para criar um Click manipulador de eventos para o botão e, em seguida, adicione o código a seguir.

    Dim fw As StreamWriter
    

Nota

O Visual Studio Integrated Development Environment (IDE) retornará ao Editor de Códigos e posicionará o ponto de inserção dentro do manipulador de eventos onde você deve adicionar o código.

  1. Para gravar no arquivo, use o WriteStreamWriter método da classe. Adicione o seguinte código imediatamente após Dim fw As StreamWriter. Você não precisa se preocupar que uma exceção será lançada se o arquivo não for 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
    
  2. Certifique-se de que o usuário não pode enviar uma entrada em branco adicionando o seguinte código imediatamente 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 este é um diário, o usuário desejará atribuir uma data a cada entrada. Insira o seguinte código depois fw = New StreamWriter("C:\MyDiary.txt", True) para definir a variável Today para a data atual.

    Dim Today As DateTime
    Today = Now
    fw.Write(CStr(Today))
    fw.Write(ControlChars.CrLf)
    
  4. Por fim, anexe o código para limpar o TextBoxarquivo . Adicione o seguinte código ao Clear evento do Click botão.

    Entry.Text = ""
    

Adicionando recursos de exibição ao Diário

Nesta seção, você adiciona um recurso que exibe a entrada mais recente no DisplayEntryTextBox. Você também pode adicionar um ComboBox que exibe várias entradas e a partir do qual um usuário pode selecionar uma entrada para exibir no DisplayEntryTextBox. Uma instância da classe lê de StreamReaderMyDiary.txt. Como a StreamWriter classe, StreamReader destina-se ao uso 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 suas propriedades.

Ctrl Propriedades Valores
TextBox Nome

Visible

Tamanho

Multilinha
DisplayEntry

False

120,60

True
Button Nome

Texto
Display

Apresentar
Button Nome

Texto
GetEntries

Obter Inscrições
ComboBox Nome

Texto

Ativado
PickEntries

Selecione uma entrada

False

Para preencher a caixa de combinação

  1. O PickEntriesComboBox é usado 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 Click manipulador de eventos para o GetEntries botão 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 o código, pressione F5 para compilar o aplicativo e clique em Obter entradas. Clique na seta suspensa para ComboBox exibir as datas de entrada.

Para escolher e exibir entradas individuais

  1. Crie um Click manipulador de eventos para o Display botão 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, em seguida, envie uma entrada. Clique em Obter Entradas, selecione uma entrada na ComboBoxe, em seguida, clique em Exibir. O conteúdo da entrada selecionada aparece no DisplayEntryTextBox.

Permitindo que os usuários excluam ou modifiquem entradas

Finalmente, você pode incluir funcionalidade adicional permite que os usuários excluam ou modifiquem uma entrada usando DeleteEntry botões e EditEntry . Ambos os botões permanecem desativados, a menos que uma entrada seja exibida.

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

Ctrl Propriedades Valores
Button Nome

Texto

Ativado
DeleteEntry

Excluir entrada

False
Button Nome

Texto

Ativado
EditEntry

Editar entrada

False
Button Nome

Texto

Ativado
SubmitEdit

Enviar Editar

False

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

  1. Adicione o seguinte código ao Display evento do Click botão, após DisplayEntry.Text = ReadString.

    DeleteEntry.enabled = True
    
  2. Crie um Click manipulador de eventos para o DeleteEntry botão 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 fica habilitado EditEntry . Adicione o seguinte código ao Click evento do Display botão após DisplayEntry.Text = ReadString.

    EditEntry.Enabled = True
    
  4. Crie um Click manipulador de eventos para o EditEntry botão e adicione o código a seguir.

    Entry.Text = DisplayEntry.Text
    SubmitEdit.Enabled = True
    
  5. Crie um manipulador de Click eventos para o SubmitEdit botão e adicione o seguinte código

    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 Obter Entradas, selecione uma entrada e clique em Exibir. A entrada aparece no DisplayEntryTextBoxarquivo . Clique em Editar entrada. A entrada aparece no EntryTextBoxarquivo . Edite a entrada no e clique em EntryTextBoxEnviar edição. Abra o ficheiro para confirmar a MyDiary.txt correção. Agora selecione uma entrada e clique em Excluir entrada. Quando as MessageBox solicitações confirmarem, clique em OK. Feche o aplicativo e abra MyDiary.txt para confirmar a exclusão.

Consulte também