Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial se muestra cómo abrir y leer un archivo mediante la StreamReader clase , comprobar si se accede a un archivo, buscar una cadena dentro de un archivo leído con una instancia de la StreamReader clase y escribir en un archivo mediante la StreamWriter clase .
Nota:
El equipo puede mostrar nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las instrucciones siguientes. La edición de Visual Studio que tiene y la configuración que usa determinan estos elementos. Para obtener más información, consulte Personalizando el IDE.
Creación de la aplicación
Inicie Visual Studio e inicie el proyecto mediante la creación de un formulario que el usuario pueda usar para escribir en el archivo designado.
Para crear el proyecto
En el menú Archivo, seleccione Nuevo proyecto.
En el panel Nuevo proyecto , haga clic en Aplicación windows.
En el cuadro Nombre , escriba
MyDiaryy haga clic en Aceptar.Visual Studio agrega el proyecto al Explorador de soluciones y se abre el Diseñador de Windows Forms .
Agregue los controles de la tabla siguiente al formulario y establezca los valores correspondientes para sus propiedades.
| Objeto | Propiedades | Valor |
|---|---|---|
| Button |
Nombre Texto |
SubmitEnviar entrada |
| Button |
Nombre Texto |
ClearBorrar entrada |
| TextBox |
Nombre Texto Multilínea |
EntryEscriba algo. False |
Escribir en el archivo
Para agregar la capacidad de escribir en un archivo a través de la aplicación, use la StreamWriter clase . StreamWriter está diseñado para la salida de caracteres en una codificación determinada, mientras que la Stream clase está diseñada para la entrada y salida de bytes. Se usa StreamWriter para escribir líneas de información en un archivo de texto estándar. Para obtener más información sobre la StreamWriter clase , vea StreamWriter.
Para agregar funcionalidad de escritura
En el menú Ver , elija Código para abrir el Editor de código.
Dado que la aplicación hace referencia al System.IO espacio de nombres, agregue las siguientes instrucciones al principio del código, antes de la declaración de clase para el formulario, que comienza
Public Class Form1.Imports System.IOAntes de escribir en el archivo, debe crear una instancia de la clase StreamWriter.
En el menú Ver , elija Diseñador para volver al Diseñador de Windows Forms. Haga doble clic en el
Submitbotón para crear un Click controlador de eventos para el botón y agregue el código siguiente.Dim fw As StreamWriter
Nota:
El entorno de desarrollo integrado (IDE) de Visual Studio volverá al Editor de código y colocará el punto de inserción dentro del controlador de eventos donde debe agregar el código.
Para escribir en el archivo, use el Write método de la StreamWriter clase . Agregue el siguiente código directamente después de
Dim fw As StreamWriter. No es necesario preocuparse de que se produzca una excepción si no se encuentra el archivo, ya que se creará si aún no existe.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 TryAsegúrese de que el usuario no puede enviar una entrada en blanco agregando el código siguiente directamente después
Dim ReadString As Stringde .If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then Entry.Text = "Please enter something." Return End IfDado que se trata de un diario, el usuario querrá asignar una fecha a cada entrada. Inserte el siguiente código después de
fw = New StreamWriter("C:\MyDiary.txt", True)para establecer la variableTodayen la fecha actual.Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)Por último, adjunte código para borrar el TextBox. Agregue el código siguiente al evento
Cleardel botón Click.Entry.Text = ""
Agregar características de visualización al diario
En esta sección, agregará una característica que muestra la entrada más reciente de DisplayEntryTextBox. También puede agregar un ComboBox que muestra varias entradas y desde las que un usuario puede seleccionar una entrada para mostrarla en .DisplayEntryTextBox Una instancia de la clase StreamReader lee desde MyDiary.txt. Al igual que la StreamWriter clase , StreamReader está pensada para su uso con archivos de texto.
Para esta sección del tutorial, agregue los controles de la tabla siguiente al formulario y establezca los valores correspondientes para sus propiedades.
| Supervisión | Propiedades | Valores |
|---|---|---|
| TextBox |
Nombre visible Tamaño Multilínea |
DisplayEntryFalse120,60True |
| Button |
Nombre Texto |
DisplayMonitor |
| Button |
Nombre Texto |
GetEntriesObtener entradas |
| ComboBox |
Nombre Texto Habilitado |
PickEntriesSeleccionar una entrada False |
Para rellenar el cuadro combinado
PickEntriesComboBox se usa para mostrar las fechas en las que un usuario envía cada entrada, por lo que el usuario puede seleccionar una entrada de una fecha específica. Cree un Click controlador de eventos en elGetEntriesbotón y agregue el código siguiente.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 probar el código, presione F5 para compilar la aplicación y, a continuación, haga clic en Obtener entradas. Haga clic en la flecha desplegable en ComboBox para mostrar las fechas de entrada.
Para elegir y mostrar entradas individuales
Cree un Click controlador de eventos para el
Displaybotón y agregue el código siguiente.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 probar el código, presione F5 para compilar la aplicación y, a continuación, envíe una entrada. Haga clic en Obtener entradas, seleccione una entrada de ComboBoxy, a continuación, haga clic en Mostrar. El contenido de la entrada seleccionada aparece en .
DisplayEntryTextBox
Habilitar usuarios para eliminar o modificar entradas
Por último, pueda incluir funcionalidad adicional que permita a los usuarios eliminar o modificar una entrada mediante los botones DeleteEntry y EditEntry. Ambos botones permanecen deshabilitados a menos que se muestre una entrada.
Agregue los controles de la tabla siguiente al formulario y establezca los valores correspondientes para sus propiedades.
| Supervisión | Propiedades | Valores |
|---|---|---|
| Button |
Nombre Texto Habilitado |
DeleteEntryEliminar entrada False |
| Button |
Nombre Texto Habilitado |
EditEntryEditar entrada False |
| Button |
Nombre Texto Habilitado |
SubmitEditEnviar edición False |
Para habilitar la eliminación y modificación de entradas
Agregue el código siguiente al evento
Displaydel botón Click, después deDisplayEntry.Text = ReadString.DeleteEntry.enabled = TrueCree un Click controlador de eventos para el
DeleteEntrybotón y agregue el código siguiente.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 IfCuando un usuario muestra una entrada, el
EditEntrybotón se habilita. Agregue el siguiente código al evento de Click del botónDisplaydespués deDisplayEntry.Text = ReadString.EditEntry.Enabled = TrueCree un Click controlador de eventos para el
EditEntrybotón y agregue el código siguiente.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = TrueCree un Click controlador de eventos para el
SubmitEditbotón y agregue el código siguiente.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 probar el código, presione F5 para compilar la aplicación. Haga clic en Obtener entradas, seleccione una entrada y, a continuación, haga clic en Mostrar. La entrada aparece en DisplayEntryTextBox. Haga clic en Editar entrada. La entrada aparece en EntryTextBox. Edite la entrada en y haga clic en EntryTextBoxEnviar edición. Abra el MyDiary.txt archivo para confirmar la corrección. Ahora seleccione una entrada y haga clic en Eliminar entrada. Cuando MessageBox solicite confirmación, haga clic en Aceptar. Cierre la aplicación y abra MyDiary.txt para confirmar la eliminación.