Usar Archivos de Texto en Xojo: Guía para principiantes

A continuación encontrarás traducido al castellano el artículo escrito por Gabriel Ludosanu y publicado originalmente en el Blog de Xojo.

Como desarrolladores es frecuente que tengamos que trabajar con archivos de texto, ya se trate de leer ajustes de configuración, tratar archivos de registro o bien generar reportes, entre otros casos. Los archivos de texto son una parte común en el desarrollo de software, y saber como manipularlos es importante a la hora de crear aplicaciones Xojo que sean flexibles.

En este artículo empezaré haciendo uso de las clases y técnicas de Xojo a la hora de tratar con archivos de texto. Comenzaremos viendo como leer los contenidos de los archivos de texto utilizando la clase TextInputStream. Aprenderás como puedes leer todo el contenido de un archivo de texto en una cadena y también cómo procesar su contenido línea a línea.

Luego veremos como escribir archivos de texto usando para ello la clase TextOutputStream. Mediante los ejemplos verás como se puede escribir todo el contenido de una cadena de texto sobre el archivo y también cómo puedes escribir las líneas de una en una, lo cual resulta de utilidad cuando quieres generar un archivo de registro o bien guardar las preferencias del usuario.

Cuando termines de leer este artículo comprenderás mejor las principales técnicas a la hora de acceder, leer y escribir archivos de texto en tus aplicaciones Xojo. Estas capacidades te permitirán escribir software más robusto y flexible que podrás utilizar con un amplio rango de fuentes de datos y formatos.

Leer Archivos de Texto

Cuando se trata de leer los contenidos de un archivo de texto en Xojo, la clase TextInputStream es la principal herramienta a utilizar. Esta clase proporciona los métodos necesarios tanto para leer todo el contenido del archivo como para hacerlo línea a línea.

Uso de TextInputStream para Abrir y Leer Archivos de Texto

Este es un ejemplo que demuestra como leer todo el contenido de un archivo de texto para asignarlo a una cadena:

// Paso 1: Abrir el Archivo
Var file As FolderItem
file = FolderItem.ShowOpenFileDialog("text/plain") // Muestra el diálogo para la selección de un archivo de texto

If file <> Nil Then
// Paso 2: Crea una instancia dea TextInputStream
Var inputStream As TextInputStream
inputStream = TextInputStream.Open(file)

// Paso 3: Lee el Archivo
Var fileContents As String
fileContents = inputStream.ReadAll

// Paso 4: Cierra el Stream
inputStream.Close

// Muestra el contenido del archivo (para el propósito de esta demostración)
MessageBox(fileContents)
Else
MessageBox("No se ha seleccionado ningún archivo.")
End If

En este ejemplo:

  • Se utiliza el método FolderItem.ShowOpenFileDialog para mostrar un diálogo que permite al usuario seleccionar un archivo de texto.
  • El método TextInputStream.Open abre el archivo seleccionado en modo de lectura.
  • El método ReadAll lee todos los contenidos del archivo asignándolos a la variable de tipo String fileContents.
  • El método Close cierra el TextInputStream.

Esta aproximación es útil cuando necesitas procesar todos los contenidos de un archivo de texto a la vez. Sin embargo, para archivos de gran tamaño es probable que quieras procesar los contenidos línea a línea para hacer un uso más eficiente de la memoria, lo cual se cubre en la siguiente sección.

Usar TextInputStream para Leer Línea a Línea

La lectura de un archivo de texto línea a línea es más eficiente, especialmente cuando se trata de archivos de gran tamaño. Este método te permite procesar de forma individual cada línea, reduciendo así el uso de memoria y permitiéndote gestionar grupos de datos también de forma más eficaz.

Este es un ejemplo en el que se muestra como leer un archivo de texto línea a línea en Xojo:

// Paso 1: Abrir el archivo
Var file As FolderItem
file = FolderItem.ShowOpenFileDialog("text/plain") // Muestra el diálogo de selección de archivo

If file <> Nil Then
// Paso 2: Crea un TextInputStream
Var inputStream As TextInputStream
inputStream = TextInputStream.Open(file)

// Paso 3: lee cada línea
Var line As String
While Not inputStream.EndOfFile
line = inputStream.ReadLine
// Procesa cada línea (para los propósitos de esta demostración simplemente mostraremos la línea en un diálogo de mensaje)
MessageBox(line)
Wend

// Paso 4: Cierra el Stream
inputStream.Close
Else
MessageBox("No se ha seleccionado ningún archivo.")
End If

Esta aproximación es particularmente útil cuando necesitas procesar o analizar cada línea de un archivo de texto de forma independiente, como por ejemplo cuando se parsea un archivo de registro o en la lectura de ajustes de configuración.

Escribir Archivos de Texto

Escribir archivos de texto en Xojo es tan sencillo como leerlos. La clase TextOutputStream te permite escribir datos a archivos de texto, ya sea todos a la vez o bien línea a línea.

Usar TextOutputStream para Escribir Archivos de Texto Completos

Sigue estos pasos para escribir un texto completo sobre un archivo:

// Paso 1: Permite que el usuario defina la ruta y el nombre del archivo de texto que se va a crear
Var file As FolderItem
file = FolderItem.ShowSaveFileDialog("text/plain", "example.txt") // Muestra el diálogo para guardar un archivo, de modo que se puede indicar su nombre y ruta.

If file <> Nil Then
// Paso 2: Crea un TextOutputStream
Var outputStream As TextOutputStream
outputStream = TextOutputStream.Create(file)

// Paso 3: Escribe en el archivo
Var fileContents As String = "¡Hola, Xojo!"
outputStream.Write(fileContents)

// Paso 4: Cierra el Stream
outputStream.Close

MessageBox("Se ha creado el archivo con éxito.")
Else
MessageBox("No se ha indicado ningún archivo.")
End If

En este ejemplo:

  • Se utiliza el método FolderItem.ShowSaveFileDialog para mostrar el diálogo que permite indicar el nombre y ruta en el que se va a generar el archivo.
  • El método TextOutputStream.Create crea un nuevo archivo o sustituye un archivo ya existente.
  • El método Write escribe los contenidos de la variabel de tipo String fileContents en el archivo.
  • El método Close cierra el TextOutputStream.

Usar TextOutputStream para Escribir Línea a Línea

Escribir un archivo línea a línea resulta de utilidad cuando has de escribir datos de forma incremental o bien gestionar grandes bloques de datos.

Sigue estos pasos para escribir un archivo línea a línea:

// Paso 1: Permite que el usuario defina el nombre del archivo de texto que se va a crear, así como su ubicación
Var file As FolderItem
file = FolderItem.ShowSaveFileDialog("text/plain", "example.txt") // Muestra el diálogo que permite indicar el archivo

If file <> Nil Then
// Paso 2: Crea un TextOutputStream
Var outputStream As TextOutputStream
outputStream = TextOutputStream.Create(file)

// Paso 3: Escribe cada línea
Var lines() As String = Array("Line 1", "Line 2", "Line 3")
For Each line As String In lines
outputStream.WriteLine(line)
Next

// Paso 4: Cierra el Stream
outputStream.Close

MessageBox("Archivo creado con éxito.")
Else
MessageBox("No se ha indicado ningún archivo.")
End If

En este ejemplo:

  • Se utiliza el método FolderItem.ShowSaveFileDialog para mostrar el diálogo que permite al usuario indicar el nombre y la ubicación del archivo que se va a crear.
  • El método TextOutputStream.Create crea un nuevo archivo o bien sustituye a un archivo ya existente.
  • El método WriteLine escribe en el archivo cada una de las líneas encontradas en el array.
  • El método Close cierra el TextOutputStream.

Mediante la comprensión de estos métodos puedes elegir cuál se ajusta mejor a tus necesidades. Por ejemplo, escribir todos los contenidos de texto a la vez resulta útil para pequeños grupos de datos o bien cuando quieres escribir todos los datos de forma simultánea. La escritura línea a línea es más eficiente en el caso de grandes cantidades de datos o bien cuando necesitas escribir de forma incremental.

Conclusión

Este artículo te ha proporciona los conocimientos necesarios para que puedas gestionar los archivos de texto en Xojo utilizando las clases TextInputStream y TextOutputStream. Hemos cubierto las siguientes técnicas esenciales:

Leer archivos de texto:

  • Leer todo el archivo en una cadena mediante el uso de TextInputStream.ReadAll.
  • Leer archivos línea a línea utilizando TextInputStream.ReadLine.

Escribir archivos de texto:

  • Escribir todos los datos de texto a un archivo utilizando TextOutputStream.Write.
  • Escribir los datos de texto línea a línea utilizando TextOutputStream.WriteLine.

Prueba a aplicar estas técnicas en tus propios proyectos. Experimenta con los diferentes métodos para ver cómo pueden ayudarte a gestionar tus archivos de texto de forma más eficiente. La documentación oficial de Xojo sobre el uso de archivos de texto es un gran recurso en el que puedes encontrar información adicional.

¿Listo para empezar? ¡Descarga Xojo de forma gratuita y empieza a crear tus aplicaciones hoy mismo!

¡Feliz programación!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *