![]() ![]() ![]() ![]() |
Entrada/salida |
Lectura de un archivo de texto
archivo2:
ArchivoApp2.java
El proceso de lectura de un archivo de texto es similar a la lectura desde el dispositivo estándar. Creamos un objeto entrada de la clase FileReader en vez de InputStreamReader. El final del archivo viene dado cuando la función read devuelve -1. El resto del código es similar.
FileReader entrada=null; StringBuffer str=new StringBuffer(); try { entrada=new FileReader("ArchivoApp2.java"); int c; while((c=entrada.read())!=-1){ str.append((char)c); } }catch (IOException ex) {}
Para mostrar el archivo de texto en la pantalla del monitor, se imprime el contenido del objeto str de la clase StringBuffer.
System.out.println(str);
Una vez concluído el proceso de lectura, es conveniente cerrar el flujo de datos, esto se realiza en una claúsula finally que siempre se llama independientemente de que se produzcan o no errores en el proceso de lectura/escritura.
}finally{ if(entrada!=null){ try{ entrada.close(); }catch(IOException ex){} } }
El código completo de este ejemplo es el siguiente:
public class ArchivoApp2 { public static void main(String[] args) { FileReader entrada=null; StringBuffer str=new StringBuffer(); try { entrada=new FileReader("ArchivoApp2.java"); int c; while((c=entrada.read())!=-1){ str.append((char)c); } System.out.println(str); System.out.println("--------------------------------------"); }catch (IOException ex) { System.out.println(ex); }finally{ //cerrar los flujos de datos if(entrada!=null){ try{ entrada.close(); }catch(IOException ex){} } System.out.println("el bloque finally siempre se ejecuta"); } } } |
archivo3:
ArchivoApp3.java
Los pasos para leer y escribir en disco son los siguientes:
entrada=new FileReader("ArchivoApp3.java"); salida=new FileWriter("copia.java");
while((c=entrada.read())!=-1){ salida.write(c); }
entrada.close(); salida.close();
El código completo de este ejemplo que crea un archivo copia del original, es el siguiente
import java.io.*; public class ArchivoApp3 { public static void main(String[] args) { FileReader entrada=null; FileWriter salida=null; try { entrada=new FileReader("ArchivoApp3.java"); salida=new FileWriter("copia.java"); int c; while((c=entrada.read())!=-1){ salida.write(c); } }catch (IOException ex) { System.out.println(ex); }finally{ //cerrar los flujos de datos if(entrada!=null){ try{ entrada.close(); }catch(IOException ex){} } if(salida!=null){ try{ salida.close(); }catch(IOException ex){} } System.out.println("el bloque finally siempre se ejecuta"); } } } |
Cuando se trate de leer y escribir datos binarios se sustituye FileReader por FileInputStream y FileWriter por FileOutputStream. De hecho, si se realiza esta sustitución en el código fuente de este ejemplo, los resultados no cambian.