140 likes | 434 Views
Flujos y archivos. Unidad 6. Flujos y archivos. Todos los datos fluyen a través de una computadora desde una entrada hacia una salida Una fuente de entrada puede representar muchos tipos de entrada distintos: A rchivo de disco Teclado Conector (socket) de red. Flujo de E/S.
E N D
Flujos y archivos Unidad 6
Flujos y archivos • Todos los datos fluyen a través de una computadora desde una entrada hacia una salida • Una fuente de entrada puede representar muchos tipos de entrada distintos: • Archivo de disco • Teclado • Conector (socket) de red.
Flujo de E/S • Lo implementa con varias clases del paquete java.io • Representa todos los orígenes y destinos de los datos detrás de una interfaz uniforme. • Este flujo de datos se denomina también stream. • Flujo de entrada input streamque manda los datos desde el exterior. • Flujo de salida output streamque dirige los datos hacia los dispositivos de salida
E/S a un archivo • La entrada/salida directa a archivo es una violación de seguridad de acceso. • La clase File: • Pueden abstraerse las particularidades de cada sistema de archivos • Proporciona los métodos necesarios para obtener información sobre los mismos. • Un File es el único objeto del paquete de E/S que referencia a un archivo de disco real. • La clase File no especifica cómo se recupera o almacena la información en los archivos describe las propiedades de un objeto archivo .
Archivos • Los objetos archivo se pueden crear utilizando uno de los tres constructores disponibles: • File(Stringpath); • File(Stringpath, Stringname); • File(File dir, Stringname); • Ejemplos: • File f1 = new File("/"); • File f2 = new File("/","datos.dat"); • File f3 = new File(f1, " datos.dat");
Operaciones básicas en archivos secuenciales • a) Campo Elemento de datos básico, • Ejemplos: • nombre de un empleado, una fecha o un valor leído por un sensor. • Llongitud fija o variable • Tipo de datos que contenga • b) Registro se implementa como classen Java • Es un conjunto de campos relacionados que pueden tratarse como una unidad • Ejemplo: • Registro “empleado” campos: nombre, RFC, fecha de contratación, etc. Un registro puede ser de longitud variable en el caso de que el número de campos pueda variar, esto dependerá de su diseño. • c) Archivo es un conjunto de registros similares. • Los usuarios y las aplicaciones se refieren a él por un nombre que es único • Puede crearse y borrarse. • Restricciones al control de acceso suelen aplicarse a los archivos. • d) Base de datos conjunto de datos relacionados. • El aspecto fundamental es que está diseñada para ser usada por varias aplicaciones diferentes. • Puede contener toda la información relativa a una organización o proyecto.
Creación de un archivo de acceso secuencial. • La clase DataOutputStream es para escribir datos del tipo primitivo de Java • Esta clase tiene un sólo constructor que toma un objeto de la clase OutputStreamo sus derivadas como parámetro. • El papel del objeto DataOutputStream proporciona acceso de alto nivel a un archivo convirtiendo los valores primitivos de Java en una secuencia de bytes • Almacenar datos de manera independiente de la plataforma o para mandarlos por una red entre computadoras muy distintas • escriben al archivo utilizando un objeto de tipo FileOutputStream.
Leer Archivo • Primero se crea un Reader de tipo fichero. • clase FileReader. • La utiliza el buffer como origen de lectura. • Ejemplo: • FileReaderfr = new FileReader("datos.txt"); BufferedReaderbf = new BufferedReader(fr);
Ejemplo: Leer un archivo packageleerarchivo; importjava.io.BufferedReader; importjava.io.FileNotFoundException; importjava.io.FileReader; importjava.io.IOException; publicclassLeerArchivo{ publicstaticvoidmain(String[] args) { try { FileReaderfr = new FileReader("archivo.txt"); BufferedReaderbf = new BufferedReader(fr); StringsCadena; while ((sCadena = bf.readLine())!=null) { System.out.println(sCadena); } } catch (FileNotFoundExceptionfnfe){ fnfe.printStackTrace(); } catch (IOExceptionioe){ ioe.printStackTrace(); } } }
Escribir Archivo • Validar si el archivo existe o no. • También se puede sobre escribir sobre el archivo directamente. • Depende del contenido que este tuviese. • Resumiendo, bastará utilizar el método exists() de la clase File. • StringsFichero = “archivo.txt"; • File fichero = newFile(sFichero);
Escribir archivo (cont.) • Crear un BufferedWriter. • Esta clase nos ayuda a manejar los stream en forma de buffer con métodos muy sencillos. • Este buffer necesita saber cual es el archivo. • clase FileWriter. • El código quedaría así: • BufferedWriterbw = newBufferedWriter(newFileWriter(sArchivo);
Ejemplo: Escribir en un archivo packageescribirarchivo; import java.io.*; publicclassEscribirArchivo { publicstaticvoidmain(String[] args) { // Revisar si existe el archivo StringsArchivo = "archivo3.txt"; File arch = new File(sArchivo); if (arch.exists()) System.out.println("El archivo " + sArchivo + " ya existe"); else { try{ BufferedWriterbw = new BufferedWriter(new FileWriter(sArchivo)); for (int x=0;x<10;x++) bw.write("Fila numero " + x + "\n"); bw.close(); } catch (IOExceptionioe){ ioe.printStackTrace(); } } } }