Вы находитесь на странице: 1из 5

Archivos de Texto .

Archivos de Texto ................................................................................................................................... 1


1.EscribirarchivosdeTexto............................................................................................................................ 1
1.1.Escribirenun archivodeTexto ............................................................................................................... 1
1.2.Métodospara almacenardatosenunarchivedeTexto................................................................................... 1
2.Leerunarchivo deTexto............................................................................................................................. 2
2.1.Métodospara leerdatosdeunarchivodeTexto........................................................................................... 2
3.MétodosparacerraryliberarunarchivodeTexto................................................................................................. 2
Ejercicio................................................................................................................................................... 3
4.Cuidadoconla codificacióndelosficheros......................................................................................................... 5

1. Escribir archivos de Texto

Visual Basic incluye para manipular archivos de texto varias Clases, entre las que se
encuentran StreamWriter y StreamReader. Sólo una de ellas puede tener acceso al
archivo en cada momento. Si se necesita leer y escribir simultáneamente en un mismo
archivo, es mejor intentar desarrollar una Base de Datos.

1.1. Escribir en un archivo de Texto


Para escribir en un archivo de Texto utilizaremos la Clase StreamWriter .
El primer paso para utilizar esta Clase será declarar un Objeto a partir de ella, como en este
ejemplo:

Formato-1:

Crea un archivo Nuevo y si existe uno con el mismo nombre lo destruye, perdiéndose toda la
información.

Dim Objeto As New System.IO. StreamWriter(“c:\Texto.txt”)

Formato-2:

Con este formato se abrirá el archivo existente (o se creará si no existe) y las operaciones de
escritura se efectuarán detrás de cualquier contenido previo

Dim Objeto As New System.IO. StreamWriter(“c:\Texto.txt”, True)

1.2. Métodos para almacenar datos en un archive de Texto


• Write(Cualquier dato de tipo String, como una Cadena, un Texto, una C. Texto….. )

1
Envía la información al archivo pero no inserta un salto de línea al final.

• WriteLine(Cualquier dato de tipo String, como una Cadena, un Texto, una C. Texto…)

Envía una sola línea de texto al archivo y crea automáticamente un salto de línea al final.
Cada ejecución de este método crea una línea nueva en el archivo de texto.

2. Leer un archivo de Texto


Para leer en un archivo de Texto utilizaremos la Clase StreamReader .
En primer lugar tendremos que definir un Objeto de este tipo a partir de la siguiente
definición:

Dim Objeto As New System.IO. StreamReader(“c:\Texto.txt”)

Es importante tener en cuenta que si StreamReader no encuentra el archivo, generará una


excepción, que tendremos que gestionar en nuestro código con el bloque Try… Match.

Este bloque siempre debe estar cuando se trata del uso de ficheros.

2.1. Métodos para leer datos de un archivo de Texto

• ReadLine()

Se lee línea por línea.

• ReadToEnd()

Este método lee el archivo completo y almacena su contenido en una variable String.

3. Métodos para cerrar y liberar un archivo de Texto

• Objeto.Close()

Es absolutamente imprescindible que cerremos los archivos de texto cuando terminemos de


trabajar con ellos y eso es precisamente lo que hace este método.

• Objeto.Dispose()

Con este método aseguramos que el archivo queda completamente liberado.

2
Ejercicio

Public Class Form1


Dim boton As Byte = 0
Dim sw As Boolean = False
Private Sub Bcrear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Bcrear.Click
boton = 1
Label2.Visible = False
Tlectura.Visible = False
Label1.Visible = True
T.Visible = True
T.Focus()

End Sub

Private Sub T_KeyPress(ByVal sender As Object, ByVal e As


System.Windows.Forms.KeyPressEventArgs) Handles T.KeyPress
Static obj As Object = Nothing
Dim texto As String

Try

3
If sw = False Then
If boton = 1 Then
obj = New System.IO.StreamWriter("c:\Texto.txt")
Else
obj = New System.IO.StreamWriter("c:\Texto.txt", True)
End If
sw = True
End If
If e.KeyChar = Chr(13) Then
texto = T.Text
obj.WriteLine(texto)

T.Text = ""
T.Focus()
End If
If e.KeyChar = Chr(27) Then
obj.Close()
obj.Dispose()
sw = False
Label1.Visible = False
T.Visible = False
boton = 0
End If
Catch ex As NullReferenceException
MessageBox.Show(ex.Message)
End Try
End Sub

Private Sub T_TextChanged(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles T.TextChanged

End Sub

Private Sub Bleer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles Bleer.Click
Dim ObjetoFichero As New System.IO.StreamReader("c:\Texto.txt")
Label2.Visible = True
Tlectura.Visible = True
Tlectura.Text = ObjetoFichero.ReadToEnd
ObjetoFichero.Close()
ObjetoFichero.Dispose()
End Sub

Private Sub Bfin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles Bfin.Click
End
End Sub

Private Sub Bañadir_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles Bañadir.Click

4
boton = 2
Label2.Visible = False
Tlectura.Visible = False
Label1.Visible = True
T.Visible = True
T.Focus()
End Sub
End Class

4. Cuidado con la codificación de los ficheros.


En . Net la codificación de los ficheros de texto es UTF-8 Unicode como predeterminada,
pudiendo admitir los caracteres propios del idioma (como la ñ).
El problema es que si guardamos un fichero de texto con codificación ANSI (por ejemplo, al
utilizar el NotePad) y lo abrimos en UTF-8, los caracteres especiales no aparecerán, ya que
los códigos usados en uno y otro sistema para estos caracteres son distintos. La misma
afirmación es válida si el proceso es de UTF-8 a ANSI.
Si leemos un archivo de texto en ASCII que contenga una Ñ se perderá.
Dim ftexto As StreamReader

ftexto = New StreamReader(“c:\textoascii.txt”)


Caja.Text = ftexto.ReadToEnd()
ftexto.Close()
Lo solucionamos:
Dim ftexto As StreamReader

ftexto = New StreamReader(“c:\textoascii.txt”, Encoding.Default)


caja.Text = ftexto.ReadToEnd()
ftexto.Close()

Вам также может понравиться