Download - Clase Archivo Java
![Page 1: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/1.jpg)
Archivos en Java
Fuente:
Eliana Scheihing G.
Erick Araya
2002
![Page 2: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/2.jpg)
Objetivos de la sesión
Aprender a escribir y leer desde un archivo del disco
Aplicaciones
![Page 3: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/3.jpg)
Archivos de Disco
Archivo: colección de información almacenada en un medio magnético
Los archivos se identifican con un nombre y se caracterizan por los datos que contienen
Accciones sobre un archivo: Crearlo Leer su contenido Escribir información en él Cambiarle su nombre Eliminarlo
![Page 4: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/4.jpg)
Flujo de E/S
Objeto que permite la comunicación entre el programa y el origen o destino de cierta información
Programa
Archivo
Archivo
Flujo de Entrada
Flujo de Salida
![Page 5: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/5.jpg)
Flujo de E/S
Para comunicarse con un archivo, un programa:Debe abrir un flujo y leer la información en él almacenada
Debe abrir un flujo y escribir información en el mismo
![Page 6: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/6.jpg)
Entrada y Salida
Algoritmo de Lectura: Abrir un flujo desde un archivo Mientras haya información
Leer información Cerrar el flujo
Algoritmo de Escritura Abrir un flujo hacia un archivo Mientras haya información
Escribir información Cerrar el flujo
Se requiere importar el paquete java.io
![Page 7: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/7.jpg)
La Clase File
Modela los archivos de disco. Constructor (el procedimiento que es
invocado para iniciar un objeto): File(String S)
Uso:File f= new File(“Arch”);• Crea un objeto de la clase File, cuyo nombre es
Arch.• Obs: Si el archivo no existe, la creación del objeto
f, no implica la creacion del archivo “Arch” en el disco.
![Page 8: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/8.jpg)
La Clase File
Si el archivo existe, es posible realizar las siguientes operaciones con él: Eliminarlo Renombrarlo
Ejemplo:File f1,f2,f3;f1 = new File(“Pedro”); //existef2 = new File(“Juan”); //existef3 = new File(“Diego”);// no existef1.delete();f2.renameTo(f3);
![Page 9: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/9.jpg)
La clase FileOutputStream
• Permite escribir bytes solamente en un archivo
• Constructor:FileOutputStream(File f)
• Uso: File f = new File(“MiArchivo”);FileOutputStream fs = new FileOutputStream(f);// Crea (cuando corresponde) y abre el archivo // “MiArchivo” en el disco para recibir una salida.
• Obs: Si “MiArchivo” ya existe su contenido es eliminado a la espera de la salida.
![Page 10: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/10.jpg)
La clase PrintStream
• Permite usar los métodos print y println para escribir líneas y strings completos:
• Constructor:• PrintStream(FileOutputStream fs)
• Para escribir en un archivo:File f = new File(“MiArchivo”);FileOutputStream fs = new
FileOutputStream(f);PrintStream p = new PrintStream(fs);p.println(“Bienvenidos a un archivo”);
![Page 11: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/11.jpg)
La clase PrintStream
• Una forma condensada de escribir en un archivo:PrintStream p = new PrintStream(new
FileOutputStream(new File(“MiArchivo”)));
p.println(“Bienvenidos a un archivo”);• Ejercicio: escriba un programa en Java
que imprima en pantalla el mensaje: Este es un nuevo programa en Javay que además registre este mismo
mensaje en un archivo de disco.
![Page 12: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/12.jpg)
import java.io.*;class Mensaje {static public void main(String[]args)throws Exception { String linea = "Este es un nuevo programa en Java";
System.out.println(linea);
PrintStream P = new PrintStream( new FileOutputStream(
new File("MiArchivo")));
P.println(linea);P.close();
}}
Solución
![Page 13: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/13.jpg)
La clase InputStreamReader
• Establece un puente para pasar flujos de bytes (provenientes de un origen – archivo) a flujos de caracteres
• Constructor:InputStreamReader(FileInputStream fs)
• Uso: File f = new File(“MiEntrada”);FileInputStream fs= new FileInputStream(f);InputStreamReader isr = new
InputStreamReader(fs);
![Page 14: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/14.jpg)
La clase BufferedReader
• Permite trabajar con caracteres• Constructor:
BufferedReader(InputStreamReader isr)• Uso:
File f= new File(“MiEntrada”);FileInputStream fs= new FileInputStream(f);InputStreamReader isr = new InputStreamReader(fs);BufferedReader b= new BufferedReader(isr);String linea=b.readLine();// Al objeto b se asocia el método readLine que lee
una // línea del archivo “MiEntrada”
![Page 15: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/15.jpg)
La clase BufferedReader
• Una forma condensada de leer desde un archivo:BufferedReader b= new BufferedReader(new
InputStreamReader(new FileInputStream(new File(“MiEntrada”))));
String linea=b.readLine();• Ejercicio:
Escriba un programa en Java que lea el nombre de un archivo de texto desde teclado y realice una copia del mismo.
Si el nombre del archivo es nombre, la copia del archivo debe llamarse nombre.copia
![Page 16: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/16.jpg)
import java.io.*;class Copia {static public void main(String[]args)throws Exception { BufferedReader Kb = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Ingrese el nombre del archivo: ");
String Nombre= Kb.readLine();
BufferedReader B = new BufferedReader( new InputStreamReader( new FileInputStream( new File(Nombre))));
// continúa...
Solución
![Page 17: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/17.jpg)
String NombreC = Nombre.concat(".copia");PrintStream P = new PrintStream(
new FileOutputStream( new File(NombreC)));
String linea;while((linea=B.readLine()) != null) {
P.println(linea);}B.close();P.close();
}}
Solución (cont.)
![Page 18: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/18.jpg)
import java.io.*;
class Copia2{static public void main(String[]args)throws Exception{ BufferedReader Kb = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Ingrese el nombre del archivo: ");String Nombre= Kb.readLine();
BufferedReader B = new BufferedReader( new FileReader(Nombre));
![Page 19: Clase Archivo Java](https://reader035.vdocuments.co/reader035/viewer/2022081908/5528fdd54a795972158b45b0/html5/thumbnails/19.jpg)
String NombreC = Nombre.concat(".copia");PrintWriter P = new PrintWriter(
new FileWriter(NombreC));
String linea = B.readLine();while(linea != null){
P.println(linea);linea = B.readLine();
}B.close();P.close();
}}