Subido por df sfsdf sdghf h

tema-6-poo-archivos compress

Anuncio
Tema 6 Flujos y Archivos
Programación Orientada a Objetos
6. FLUJOS Y ARCHIVOS
6.1 Definición.
Un archivo es un conjunto de datos estructurados en una colección de entidades elementales llamadas
registros, que son de igual tipo y constan a su vez de diferentes entidades de nivel más bajo denominados
campos, como lo muestra la siguiente figura.
Ana
05280400
Juan
05280450
Archivo
Juan
Juan
01001010
José
05280250
Pedro
05280510
05280450
Registro
Campo
Byte (Carácter ASCII J)
1 Bit
6.2 Clasificación: Archivos de texto y binarios.
Un archivo binario es un archivo informático que contiene información de cualquier tipo codificada en
sistema binario para el propósito de almacenamiento y procesamiento en computadoras.
Muchos formatos binarios contienen partes que pueden ser interpretados como texto. Un archivo binario
que sólo contiene información de tipo textual sin información sobre el formato de este se dice que es un
archivo de texto plano.
Los términos 'archivo binario' y 'archivo de texto' se diferencian de forma que los primeros no contienen
solamente texto.
Se piensa en los archivos binarios como una secuencia de bytes que es lo que implica que dígitos binarios
(bits) se agrupen de ocho en ocho.
1
Instituto Tecnológico de Toluca
MTE. Alma Patricia Vásquez González
4
0
Tema 6 Flujos y Archivos
Programación Orientada a Objetos
Un archivo binario puede almacenar imágenes, sonido, versión comprimida de otros archivos, etc., en pocas
palabras, cualquier tipo de información.
Algunos archivos binarios tienen una cabecera, constituida por un bloque de metadatos que un programa
informático usará para interpretar correctamente la información contenida. Por ejemplo, un archivo GIF
puede consistir en múltiples imágenes y la cabecera se usa para identificar y describir cada bloque de datos
de cada imagen.
Si el archivo binario no tiene cabecera se dice que es un archivo binario plano o de texto plano, compuestos
únicamente por texto sin formato, sólo caracteres. Estos caracteres se pueden codificar de distintos modos
dependiendo de la lengua usada. Algunos de los sistemas de codificación más usados son: ASCII y Unicode.
Se les conoce también como archivos de texto llano, o texto simple, por carecer de información destinada a
generar formatos (negritas, subrayado, cursivas, tamaño, etc.) y tipos de letra (por ejemplo, Arial, Times,
Courier, etc.).
Las aplicaciones destinadas a la escritura y modificación de archivos de texto se llaman editores de texto.
6.3 Operaciones básicas y tipos de acceso.
Según características del soporte empleado y el modo en que sean organizados los registros se consideran
dos tipos de acceso.
a) Acceso secuencial
b) Acceso Directo o Aleatorio
El acceso secuencial implica el acceso a un archivo según el orden de almacenamiento de sus registros, uno
tras otro. El acceso directo es el acceso a un registro determinado sin que ello implique la consulta de los
registros precedentes.
La organización de un archivo define la forma en que se disponen sobre el soporte de almacenamiento de
ahí que los tipos de organizaciones sean.
1
2
Organización Secuencial.
Organización Directa o aleatoria.
Operaciones Sobre Archivos
Las operaciones más usadas durante una manipulación de archivos en un programa son:
a)
b)
c)
d)
Consulta. Consiste en la recuperación del contenido de un registro.
Modificación. Alteración de la información contenida en el registro.
Inserción. Agregar un nuevo registro al archivo.
Borrado. Supresión de un registro en el archivo.
Las operaciones sobre archivos se relacionan mediante programas en donde los archivos se identifican por
un nombre externo al que están asociados.
2
Instituto Tecnológico de Toluca
MTE. Alma Patricia Vásquez González
4
0
Tema 6 Flujos y Archivos
Programación Orientada a Objetos
La mayoría de los programas ejecutan las siguientes funciones u operaciones al accesar archivos:
1
Creación de archivos. Antes de que cualquier usuario pueda procesar un archivo es preciso que este
haya sido creado previamente. Esta es la primera operación que se realiza, mediante la cual se
identifica la información correspondiente al archivo en el soporte de almacenamiento. En términos
generales los datos que se requieren son.
A.
B.
C.
D.
E.
Nombre del dispositivo de almacenamiento o ruta de acceso.
Nombre del archivo
Tamaño del archivo
Organización del archivo
Tamaño del bloque o registro.
2
Apertura del archivo. Es la que permite al usuario tener disponible y acceder los archivos, los datos
requeridos generalmente son nombre del archivo, nombre del dispositivo de almacenamiento y
nombre del canal de comunicación.
3
Transferencia de datos desde el archivo (lectura) o al archivo (escritura). Se llama lectura a la
recuperación de los datos almacenados en el archivo para su manipulación en memoria principal.
La transferencia de datos hacia el archivo se llama escritura y es el almacenamiento de los datos ya
procesados en memoria principal.
4
Cerrar el archivo. El propósito de esta operación es permitir al usuario detener el uso del archivo.
Flujos en Java
Los Programas en Java realizan las operaciones de entrada y salida a través de flujos, así se consigue
gestionar en forma similar la entrada y salida sobre dispositivos muy diferentes, como teclado, pantalla,
impresora, un buffer en memoria o un archivo en disco. La siguiente figura muestra los flujos de E/S.
El programa lee datos
Programa
Archivo
Flujo de entrada
Flujo de salida
Programa
Archivo
El programa escribe datos
3
Instituto Tecnológico de Toluca
MTE. Alma Patricia Vásquez González
4
0
Tema 6 Flujos y Archivos
Programación Orientada a Objetos
Las diferentes clases de flujos se encuentran agrupadas en el paquete java.io, y en la parte superior de esta
jerarquía destacan las clases:
InputStream, OutputStream, Reader, Writer y RandomAccessFile.
OutputStream, es una clase abstracta que trata flujos de salida de bytes.
InputStream, es una clase abstracta que trata flujos de entrada de bytes.
Writer, es una clase abstracta para escribir caracteres en flujos.
Reader, es una clase abstracta para leer caracteres.
RandomAccessFile, permite implementar archivos de acceso directo
Object
InputStream
OutputStream
FileInputStream
FileOutputStream
ObjectInputStream
ObjectOutputStream
FilterInputStream
FilterOutputStream
DataInputStream
DataOutputStream
BufferedInputStream
BufferedOutputStream
Object
Writer
Reader
BufferedReader
BufferedWriter
InputStreamReader
OutputStreamWriter
FileReader
FileWriter
4
Instituto Tecnológico de Toluca
MTE. Alma Patricia Vásquez González
4
0
Tema 6 Flujos y Archivos
Programación Orientada a Objetos
Apertura de Archivos
Para crear, escribir o leer un archivo se requiere establecer un flujo a ó desde él; las clases que crean estos
flujos requieren una referencia a un objeto File o un nombre de archivo como argumento. Algunas de estas
clases son:
PRINCIPALES CLASES LECTORAS
FileReader(Acceso Secuencial). Permite crear un flujo para la lectura de caracteres desde un archivo(texto).
Sus constructores son:
FileReader (String nombre)
FileReader (File objeto_archivo)
Ejem:
FileReader arch = new FileReader (“Datos.txt”))
FileInputStream(Acceso Secuencial). Hereda de InputStream, permite crear un flujo de lectura de bytes
desde un archivo. Define el método read, que puede leer una secuencia de bytes. La lectura comienza desde
el principio del archivo, y una vez leídos, para volver a ser leídos es necesario cerrar el flujo y volverlo a abrir.
Ejem.
FileInputStream archivo = new FileInputStream (“Datos.txt”);
InputStreamReader. Es una clase general que convierte un flujo de bytes en un flujo de caracteres. Define el
método read que puede leer un carácter o un arreglo de caracteres, se utiliza si sabemos que el flujo de
entrada es de caracteres de texto. Se debe pasar como un argumento al constructor la clase especifica ligada
al origen de los datos, en este caso FileInputStream.
InputStreamReader archivo = new InputStreamReader ( new FileInputStream (“Datos.dat” );
BufferedReader. Recibe un flujo de caracteres e implementa un buffer para poder leer líneas de texto.
Define el método readLine que lee una línea de texto. Esta clase se utiliza si se sabe que el archivo es de
texto y está escrito en líneas separadas por retornos de carro. Como es general (no está ligada a ningún
dispositivo origen específico) hay que pasarle como argumento un flujo de caracteres.
Hay dos formas de manejarlo y construir el objeto tipo BufferedReader:
• Utilizar un objeto InputStreamReader creado sobre un objeto de tipo FileInputStream.
BufferedReader arch = new BufferedReader
(new InputStreamReader (
new FileInputStream (“Datos.txt”)));
•
Aceptar el tamaño del buffer predefinido usando la clase FileReader.
5
Instituto Tecnológico de Toluca
MTE. Alma Patricia Vásquez González
4
0
Tema 6 Flujos y Archivos
Programación Orientada a Objetos
BufferedReader arch = new BufferedReader (new FileReader(“Datos.txt”);
DataInputStream. Permite leer tipos de datos primitivos (enteros, reales, etc). Esta clase se utiliza si lo que
se esta leyendo son datos de tipo binario. Es general, por lo que hay que mandarle como argumento en su
constructor un objeto de tipo FileInputStream. Define métodos como: readInt, readFloat, readBoolean, etc.
Ejem:
DataInputStream arch = new DataInputStream (new FileInputStream (“Datos.dat”));
RandomAccessFile. Permite el acceso directo (AD) a una determinada posición dentro de un archivo, así
como la lectura y la escritura de datos en dicho archivo. El último parámetro es el modo en que se creará el
flujo, puede ser r, para lectura o rw para lectura/escritura.
Ejem:
RandomAccessFile arch = new RandomAccessFile(“Datos.dat”, “rw”);
PRINCIPALES CLASES DE ESCRITURA
FileWriter
Escribe caracteres (char) en un archivo(texto). Hereda métodos de Writer. Constructores:
FileWriter (String nombre)
FileWriter (String nombre, boolean agregar)
FileWriter (File objeto_archivo)
FileOutputStream. Esta es una clase específica que escribe una secuencia de bytes a un archivo en disco.
Define el método write que recibe como argumento a un arreglo de bits.
Para abrir un archivo de escritura se crea un objeto de tipo FileOutputStream pasando como argumento al
constructor el nombre del archivo.
Ejemplo 1:
FileOutputStream arch_sal = new FileOutputStream (“Datos.dat”);
**Nota: Si el archive existe y se abre, se destruye lo anterior.
Ejemplo 2:
File arch = new File (“Datos.dat”);
FileOutputStream arch_sal = new FileOutputStream (arch);
6
Instituto Tecnológico de Toluca
MTE. Alma Patricia Vásquez González
4
0
Tema 6 Flujos y Archivos
Programación Orientada a Objetos
**Nota: Si el archive existe y se abre, se destruye lo anterior.
Ejemplo 3:
FileOutputStream arch_sal = new FileOutputStream (“Datos.dat”, var_boolean);
**Nota: Permite agregar datos a un archivo existente con el valor booleano true, o reemplazarlos con false,
como argumento.
OutputStreamWriter. Es una clase general que convierte un flujo de caracteres en un flujo de bytes. Define
el método write para escribir a la salida un carácter o un arreglo de caracteres.
BufferedWriter. Escribe texto en un flujo de salida que acepte caracteres proporcionando un buffer para la
escritura de los caracteres o arreglos. Define el método write para escribir una línea de texto y el método
newLine para los saltos de línea. Esta clase se utiliza si se sabe que el archivo es de texto y está escrito en
líneas separadas por retornos de carro. Como es general (no está ligada a ningún dispositivo origen
específico) hay que pasarle como argumento un flujo de caracteres.
Una de las formas para manejar los archivos es utilizando
BufferedWriter arch_sal = new BufferedWriter (new FileWriter(“Datos.doc”));
DataOutputStream. Permite escribir tipos primitivos de datos (enteros, reales, boléanos, etc.). Define
métodos como writeInt, writeFloat, etc. y se utiliza si se desea generar un archivo de tipo binario. Esta clase
no está ligada a ningún destino de datos en particular por eso para escribir en archivo hay que mandar como
argumento en su consultor un objeto de tipo FileOutputStream
Ejemplo:
DataOutputStream arch = new DataOutputStream (new FileOutputStream (“Datos.dat”,true));
CLASE FILE
Se puede utilizar un String para referirse al nombre del archivo, pero también se puede utilizar un objeto
tipo File.
Este representa el nombre de un archivo o de un directorio por lo que sus métodos permiten realizar varias
acciones.
Tiene los siguientes constructores:
Public File(String ruta_completa)
Ejemplo:
File archivo1 = new File(“proyecto\\texto.txt”);
Public File(String ruta, String nombre)
Ejemplo:
File archivo2 = new File(“proyecto”, “texto.txt”);
Public File(File ruta, String nombre)
7
Instituto Tecnológico de Toluca
MTE. Alma Patricia Vásquez González
4
0
Tema 6 Flujos y Archivos
Programación Orientada a Objetos
Ejemplo:
File dir = new File(“proyecto”);
File archivo3 = new File(dir, “texto.txt”);
Métodos de la clase File:
Método
getName
getParent
getPath
getAbsolutePath
exists
isFile
isDirectory
length
delete
renameTo
Significado
Devuelve el nombre del archivo
Devuelve el directorio padre
Devuelve la ruta relativa al archivo
Devuelve la ruta absoluta al archivo
Devuelve true si el archivo existe
Devuelve true si es un archivo válido
Devuelve true si es un directorio válido
Devuelve el tamaño del archivo, cero si es un directorio
Borra el archivo o directorio
Renombra el archivo
8
Instituto Tecnológico de Toluca
MTE. Alma Patricia Vásquez González
4
0
Descargar