Ruby ( V ). Ficheros de texto. Entrada y salida estandard

Bueno, esto parece un poco mas interesante.
Aprenderemos un poco del manejo de ficheros de texto.

La clase File
Buscamos en esta página el objeto File
Vamos a utilizar tres métodos : new, close, gets, puts

con new: Creamos un objeto de la clase File con los parámetros : nombrefichero y tipo de apertura, en otras palabras, abrimos el fichero para lectura o escritura.


#abrimos el fichero entrada.txt para lectura.
fentrada=File.new ("entrada.txt","r")
#los parentesis son opcionales, pero así lo entiendo mejor

#abrimos el fichero salida.txt para escritura.
fsalida=File.new ("salida.txt","w")

con close: Cerramos el fichero

#cerrar los ficheros abiertos antes
fentrada.close
fsalida.close

gets: Este método nos permite leer una linea del fichero (en el retorno). Si el fichero esta agotádo, el retorno es nil

#leer un registro de fentrada en la variable linea
linea=fentrada.gets

puts: Este método nos permite escribir el contenido de un string en el fichero

#escribir el contenido de linea en el fichero de fsalida
fsalida.puts linea

Ejemplo:

------------------------------
# abriendo los ficheros
fentrada=File.new "entrada.txt","r"
fsalida=File.new("salida.txt","w")

#leemos una linea en la variable linea que será alfanumvrica
linea=fentrada.gets

#bucle de lectura/escritura hasta que linea==nil
until linea==nil
# escribiendo en salida.txt
fsalida.puts linea

#leyendo en linea
linea=fentrada.gets
end
#Cerrando ficheros.
fentrada.close
fsalida.close
------------------------------

Ejemplo un poco mas desarrollado:

------------------------------
fentrada=File.new("entrada.txt","r")
fsalida=File.new("salida.txt","w")

#atencion como asignamos linea y controlamos su valor (como en C)
until (linea=fentrada.gets)==nil
fsalida.puts linea
end
fentrada.close
fsalida.close
------------------------------

La Entrada y salida estandard: $stdin $stdout
El ejemplo anterior:

------------------------------
#$stdin y $stdout son de la clase File
until (linea=$stdin.gets)==nil
$stdout.puts linea
end
------------------------------
Podemos probarlo en la consola linux con algo asi como:
$cat entrada.txt | ruby prueba.rb > salida.txt
o bien
$ruby prueba.rb < entrada.txt > salida.txt



Hasta aqui hemos llegado hoy

No hay comentarios: