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();
}
}
} }