Download Flujos y archivos
Document related concepts
no text concepts found
Transcript
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 stream que manda los datos desde el exterior. • Flujo de salida output stream que 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(String path); – File(String path, String name); – File(File dir, String name); • Ejemplos: – File f1 = new File("/"); – File f2 = new File("/","datos.dat"); – File f3 = new File(f1, " datos.dat"); Métodos de la clase File Operaciones básicas en archivos secuenciales • a) Campo Elemento de datos básico, – Ejemplos: • – – • Llongitud fija o variable Tipo de datos que contenga b) Registro se implementa como class en 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. – – – • nombre de un empleado, una fecha o un valor leído por un sensor. 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 OutputStream o 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: • FileReader fr = new FileReader("datos.txt"); BufferedReader bf = new BufferedReader(fr); Ejemplo: Leer un archivo package leerarchivo; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class LeerArchivo{ public static void main(String[] args) { try { FileReader fr = new FileReader("archivo.txt"); BufferedReader bf = new BufferedReader(fr); String sCadena; while ((sCadena = bf.readLine())!=null) { System.out.println(sCadena); } } catch (FileNotFoundException fnfe){ fnfe.printStackTrace(); } catch (IOException ioe){ 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. • String sFichero = “archivo.txt"; • File fichero = new File(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í: • BufferedWriter bw = new BufferedWriter(new FileWriter(sArchivo); Ejemplo: Escribir en un archivo package escribirarchivo; import java.io.*; public class EscribirArchivo { public static void main(String[] args) { // Revisar si existe el archivo String sArchivo = "archivo3.txt"; File arch = new File(sArchivo); if (arch.exists()) System.out.println("El archivo " + sArchivo + " ya existe"); else { try{ BufferedWriter bw = new BufferedWriter(new FileWriter(sArchivo)); for (int x=0;x<10;x++) bw.write("Fila numero " + x + "\n"); bw.close(); } catch (IOException ioe){ ioe.printStackTrace(); } } } }