import java.io.*; public class LeerArchivo { public static void main(String[] args) throws IOException { // Leer el Codigo Fuente de este Archivo BufferedReader in = new BufferedReader( new FileReader("LeerArchivo.java")); String s, s2 = new String(); while ((s = in.readLine()) != null) s2 += s + "\n"; in.close(); // Leer Datos Interactivamente BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); System.out.print("Introduzca cualquier dato: "); s2 += "Usted agrego la linea \" " + stdin.readLine() + " \" en la linea de comandos"; // Depositar Datos en un Archivo de Texto try { BufferedReader leer = new BufferedReader( new StringReader(s2)); PrintWriter escribir = new PrintWriter( new BufferedWriter(new FileWriter("Archivo_Stream.txt"))); int lineaNo = 1; while ((s = leer.readLine()) != null) escribir.println(lineaNo++ + ": " + s); escribir.close(); } catch (EOFException e) { System.out.println("Final de Stream"); } } } |
Esta Clase esta diseñada para leer el archivo de Código Fuente presente, leer un renglón proporcionado al momento de ejecutarse el programa y finalmente depositar todo el contenido en otro archivo; al igual que el ejemplo anterior consta únicamente de su método principal (main
) y un bloque try/catch.
Lectura de Datos
En la primer sección es definida una Clase BufferedReader
, la cual lee el archivo de Código Fuente, nótese que no es necesario colocar esta declaración dentro de un bloque try/catch puesto que ya se sabe que el archivo existe.
Se define un ciclo while
que permanecerá activo hasta que el resultado del método readLine()
sobre la referencia definida anteriormente equivalga a null
. NOTA: El método readLine
retorna un resultado null
ya que el archivo no contenga lineas.
Dentro de cada iteración, es concatenado cada renglón leído del "Stream" y colocado en la variable s2
.
Es definida otra Clase BufferedReader
la cual es empleada para datos introducidos de la consola (System.in
).
El valor introducido por el usuario es concatenado a la variable s2
que contiene el archivo de código fuente.
Escritura de Datos
Se inicia un Bloque try/catch.
Se declara una instancia de la Clase BufferedReader
, la cual recibe como parámetro de entrada el String
definido en la sección de lectura.
Es definida una Clase PrintWriter
que permite escritura de "Streams", esta Clase recibe como parámetro de entrada la Clase BufferedWriter
la cual a su vez recibe la Clase FileWriter
, esta última toma como parámetro el archivo que será generado (Archivo_Stream.txt
).
Se genera un ciclo while, el cual en cada iteración asigna los valores de cada renglón leído hacia la referencia de la Clase PrintWriter
.
Se define un error ("Exception") del tipo EOFException
el cual sería generado en caso de llegar a un fin prematuro del archivo.