Euphoria - Archivos I / O

Con el lenguaje de programación Euphoria, puede escribir programas que lean y modifiquen datos de archivos en su disquetera o disco duro, o crear nuevos archivos como una forma de salida. Incluso puede acceder a los dispositivos de su computadora, como la impresora y el módem.

Este capítulo describe todas las funciones básicas de E / S disponibles en Euphoria. Para obtener información sobre más funciones, consulte la documentación estándar de Euphoria.

Visualización en la pantalla

La forma más sencilla de producir una salida es usar la instrucción put () donde puede pasar cualquier cadena para que se muestre en la pantalla. Hay otro método printf () que también se puede usar en caso de que tenga que formatear una cadena usando valores dinámicos.

Estos métodos convierten las expresiones que les pasa en una cadena y escriben el resultado en la salida estándar de la siguiente manera:

#!/home/euphoria-4.0b2/bin/eui
 
puts(1, "Euphoria is really a great language, isn't it?" )

Esto produce el siguiente resultado en su pantalla estándar:

Euphoria is really a great language, isn't it?

Abrir y cerrar archivos

Euphoria proporciona los métodos básicos necesarios para manipular archivos de forma predeterminada. Puede realizar la mayor parte de la manipulación de archivos utilizando los siguientes métodos:

  • open()
  • close()
  • printf()
  • gets()
  • getc()

El método abierto

Antes de poder leer o escribir un archivo, debe abrirlo usando el método open () incorporado de Euphoria . Esta función crea un descriptor de archivo que se utiliza para llamar a otros métodos de soporte asociados con él.

Sintaxis

integer file_num = open(file_name, access_mode)

El método anterior devuelve -1 en caso de que haya un error al abrir el nombre de archivo dado. Aquí están los parámetros:

  • file_name - El argumento file_name es un valor de cadena que contiene el nombre del archivo al que desea acceder.

  • access_mode- El access_mode determina el modo en el que se debe abrir el archivo. Por ejemplo, leer, escribir adjuntar, etc. En la siguiente tabla se proporciona una lista completa de posibles valores para los modos de apertura de archivos:

S. No Modos y descripción
1

r

Abre un archivo de texto solo para lectura. El puntero de archivo se coloca al principio del archivo.

2

rb

Abre un archivo para lectura solo en formato binario. El puntero de archivo se coloca al principio del archivo.

3

w

Abre un archivo de texto solo para escritura. Sobrescribe el archivo si existe. Si el archivo no existe, crea un nuevo archivo para escribir.

4

wb

Abre un archivo para escribir solo en formato binario. Sobrescribe el archivo si existe. Si el archivo no existe, crea un nuevo archivo para escribir.

5

u

Abre un archivo para leer y escribir. El puntero de archivo se establece al principio del archivo.

6

ub

Abre un archivo para lectura y escritura en formato binario. El puntero de archivo se coloca al principio del archivo.

7

a

Abre un archivo para adjuntar. El puntero de archivo está al final del archivo si el archivo existe (modo de agregar). Si el archivo no existe, crea un nuevo archivo para escribir.

8

ab

Abre un archivo para agregar en formato binario. El puntero de archivo está al final del archivo si el archivo existe (modo de agregar). Si el archivo no existe, crea un nuevo archivo para escribir.

Ejemplo

El siguiente ejemplo crea un nuevo archivo de texto en el directorio actual de su sistema Linux:

#!/home/euphoria-4.0b2/bin/eui

integer file_num
constant ERROR = 2
constant STDOUT = 1

file_num = open("myfile,txt", "w")

if file_num = -1 then
   puts(ERROR, "couldn't open myfile\n")
else
   puts(STDOUT, "File opend successfully\n")
end if

Si el archivo se abre correctamente, entonces se crea "myfile.txt" en su directorio actual y produce el siguiente resultado:

File opend successfully

El método close ()

El método close () elimina cualquier información no escrita y cierra el archivo, después de lo cual no se puede leer ni escribir más en el archivo.

Euphoria cierra automáticamente un archivo cuando el objeto de referencia de un archivo se reasigna a otro archivo. Es una buena práctica utilizar el método close () para cerrar un archivo.

Sintaxis

close( file_num );

Aquí, el descriptor de archivo recibido al abrir un archivo se pasa como parámetro.

Ejemplo

El siguiente ejemplo crea un archivo como el anterior y luego lo cierra antes de que exista el programa:

#!/home/euphoria-4.0b2/bin/eui

integer file_num
constant ERROR = 2
constant STDOUT = 1

file_num = open("myfile.txt", "w")

if file_num = -1 then
   puts(ERROR, "couldn't open myfile\n")
else
   puts(STDOUT, "File opend successfully\n")
end if

if file_num = -1 then
   puts(ERROR, "No need to close the file\n")
else
   close( file_num )
   puts(STDOUT, "File closed successfully\n")
end if

Esto produce el siguiente resultado:

File opend successfully
File closed successfully

Leer y escribir archivos

Euphoria proporciona un conjunto de métodos de acceso para facilitarnos la vida mientras leemos o escribimos un archivo, ya sea en modo texto o en modo binario. Veamos cómo usar los métodos printf () y gets () para leer y escribir archivos.

El método printf ()

El método printf () escribe cualquier cadena en un archivo abierto.

Sintaxis

printf(fn, st, x)

Aquí están los parámetros:

  • fn - Descriptor de archivo recibido del método open ().

  • st - Formatee la cadena donde decimal o atom se formatea usando% d y la cadena o secuencia se formatea usando% s.

  • x- Si x es una secuencia, entonces los especificadores de formato de st se emparejan con los elementos correspondientes de x. Si x es un átomo, normalmente st contiene solo un especificador de formato y se aplica a x. Sin embargo; si st contiene varios especificadores de formato, cada uno se aplica al mismo valor x.

Ejemplo

El siguiente ejemplo abre un archivo y escribe el nombre y la edad de una persona en este archivo:

#!/home/euphoria-4.0b2/bin/eui

integer file_num
constant ERROR = 2
constant STDOUT = 1

file_num = open("myfile.txt", "w")

if file_num = -1 then
   puts(ERROR, "couldn't open myfile\n")
else
   puts(STDOUT, "File opend successfully\n")
end if

printf(file_num, "My name is %s and age is %d\n", {"Zara", 8})

if file_num = -1 then
   puts(ERROR, "No need to close the file\n")
else
   close( file_num )
   puts(STDOUT, "File closed successfully\n")
end if

El ejemplo anterior crea el archivo myfile.txt . Se escribe contenido dado en ese archivo y finalmente se cierra. Si abre este archivo, tendría el siguiente contenido:

My name is Zara and age is 8

El método gets ()

El método gets () lee una cadena de un archivo abierto.

Sintaxis

gets(file_num)

Aquí el parámetro pasado es la descripción del archivo devuelta por el método opend () . Este método comienza a leer desde el principio del archivo línea por línea. Los caracteres tienen valores de 0 a 255. El átomo -1 se devuelve al final del archivo.

Ejemplo

Tomemos un archivo myfile.txt que ya está creado.

#!/home/euphoria-4.0b2/bin/eui

integer file_num
object line

constant ERROR = 2
constant STDOUT = 1

file_num = open("myfile.txt", "r")
if file_num = -1 then
   puts(ERROR, "couldn't open myfile\n")
else
   puts(STDOUT, "File opend successfully\n")
end if

line = gets(file_num)
printf( STDOUT, "Read content : %s\n", {line})

if file_num = -1 then
   puts(ERROR, "No need to close the file\n")
else
   close( file_num )
   puts(STDOUT, "File closed successfully\n")
end if

Esto produce el siguiente resultado:

File opend successfully
Read content : My name is Zara and age is 8

File closed successfully

Euphoria proporciona una lista de muchos métodos que le ayudan a manipular archivos. Estos métodos se enumeran en Euphoria Library Routines .