Flujos y archivos
description
Transcript of Flujos y archivos
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:
• 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 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. – 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 archivopackage 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 archivopackage escribirarchivo;import java.io.*;public class EscribirArchivo {public static void main(String[] args) {
// Revisar si existe el archivoString 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();}}} }