Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.
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ê 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
No menu Arquivo , selecione Novo Projeto .
No painel Novo Projeto , clique em Aplicativo do Windows.
Na caixa Nome, digite
MyDiarye clique em OK.O Visual Studio adiciona o projeto ao Gerenciador de Soluções e o Windows Forms Designer é aberto.
Adicione os controles na tabela a seguir ao formulário e defina os valores correspondentes para suas propriedades.
| Objeto | Propriedades | Valor |
|---|---|---|
| Button |
Nome Texto |
SubmitEnviar Submissão |
| Button |
Nome Texto |
ClearLimpar entrada |
| TextBox |
Nome Texto Multilinha |
EntryPor 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
No menu Exibir , escolha Código para abrir o Editor de Códigos.
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.IOAntes de gravar no arquivo, você deve criar uma instância de uma StreamWriter classe.
No menu Exibir , escolha Designer para retornar ao Windows Forms Designer. Clique duas vezes no
Submitbotã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
Observação
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.
Para gravar no arquivo, use o método Write da classe StreamWriter. 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 TryCertifique-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 IfComo 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ávelTodaypara 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 o TextBox. Adicione o seguinte código ao evento do botão
ClearClick.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 StreamReader lê de MyDiary.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.
| Controlo | Propriedades | Valores |
|---|---|---|
| TextBox |
Nome Visível Tamanho Multilinha |
DisplayEntryFalse120,60True |
| Button |
Nome Texto |
DisplayEcrã |
| Button |
Nome Texto |
GetEntriesObter Inscrições |
| ComboBox |
Nome Texto Ativado |
PickEntriesSelecione uma entrada False |
Para preencher a caixa de combinação
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 oGetEntriesbotã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 = TruePara testar o código, pressione F5 para compilar o aplicativo e clique em Obter entradas. Clique na seta suspensa no ComboBox para exibir as datas de entrada.
Para escolher e exibir entradas individuais
Crie um Click manipulador de eventos para o
Displaybotã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 = ReadStringPara 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 que permite que os utilizadores excluam ou modifiquem uma entrada usando os botões DeleteEntry 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.
| Controlo | Propriedades | Valores |
|---|---|---|
| Button |
Nome Texto Ativado |
DeleteEntryExcluir entrada False |
| Button |
Nome Texto Ativado |
EditEntryEditar entrada False |
| Button |
Nome Texto Ativado |
SubmitEditEnviar Editar False |
Para permitir a exclusão e modificação de entradas
Adicione o seguinte código ao evento
Displaydo botão Click, apósDisplayEntry.Text = ReadString.DeleteEntry.enabled = TrueCrie um Click manipulador de eventos para o
DeleteEntrybotã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 IfQuando um utilizador exibe uma entrada, o botão
EditEntryfica habilitado. Adicione o seguinte código ao Click evento doDisplaybotão apósDisplayEntry.Text = ReadString.EditEntry.Enabled = TrueCrie um Click manipulador de eventos para o
EditEntrybotão e adicione o código a seguir.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = TrueCrie um manipulador de Click eventos para o
SubmitEditbotão 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 no DisplayEntryTextBoxarquivo. Clique em Editar entrada. A entrada aparece no EntryTextBoxarquivo. Edite a entrada em EntryTextBox e clique em Enviar edição. Abra o ficheiro MyDiary.txt para confirmar a correção. Agora selecione uma entrada e clique em Excluir entrada. Quando o MessageBox solicitar confirmação, clique em OK. Feche o aplicativo e abra MyDiary.txt para confirmar a exclusão.