9.-Archivos PrimeraParte

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 48

E/S con Archivos

Ing. Tatiana Gualotuña


Almacenamiento secundario
 La memoria de la computadora es considerado
almacenamiento primario.

 El almacenamiento primario es volátil.


 Cuando queremos preservar la información es
necesario guardarlo en un almacenamiento de tipo no
volátil: este es el almacenamiento secundario.
Archivos.

Los archivos tienen como finalidad guardar


datos de forma permanente.Una vez que
acaba la aplicación los datos almacenados
están disponibles para que otra aplicación
pueda recuperarlos para su consulta o
modificación.
Archivos
 secuencia de bytes en un dispositivo de
almacenamiento: disco duro, memoria USB, CD, DVD,
...

 se puede leer y/o escribir


 se identifica mediante un nombre (pathname)
/home/pepe/documentos/un_fichero
Archivos.
La organización de un archivo define la forma en la en
que se estructuran u organizan los datos.

Formas de organización fundamentales:

 Secuenciales: los registros se insertan en el archivo


en orden de llagada. Las operaciones básicas
permitidas son: escribir, añadir al final del archivo y
consultar .

 Directa o aleatoria:cuando un registro es


directamente accesible mediante la especificación de
un índice.
Archivos
 Son el almacenamiento secundario por
excelencia.
 Existen varios tipos de archivos:
 archivos de texto
 archivos binarios secuenciales
Archivos de texto (caracteres)
 Son aquellos archivos que sólo almacenan datos de
tipos carácter o cadenas de caracteres.
 Son utilizados para:
 Información del tipo registro.
 Guardar información que no necesita de un formato
específico.

 Guardar información de cualquier otro tipo en estos


archivos no es una solución óptima.
Archivos de texto (caracteres)
Archivos binarios de acceso
secuencial (bytes)
 A diferencia de los archivos de texto, en estos
archivos se almacenan datos de todo tipo (char,
long, float, int, etc.).

 Los tipos de datos que se almacenan en estos


archivos se guardan de manera binaria, de acuerdo a
la extensión que tengan los tipos de datos.

 Los datos se guardan de manera secuencial, es decir,


uno detrás de otro.

 Cuando queremos accesar un dato en este tipo de


archivos, tenemos que leer cada dato, hasta encontrar
aquel que andamos buscando.
Archivos de texto (caracteres)
Punteros de lectura y
escritura
 Indican el próximo byte a leer o a escribir
 Gestionados automáticamente por el sistema operativo
 Comienzan apuntando al primer byte del fichero
 Van avanzando por el fichero según se van
leyendo/escribiendo sus contenidos
Flujos de datos (Streams)

Es una abstracción, que representa a un flujo de datos entre


un origen y un destino en Java. Todo proceso de entrada y
salida en Java se hace a través de flujos.

Entre el origen y el destino debe existir un canal , por el que


viajan datos.
Cuando se abre un archivo se establece una conexión entre
el programa y el dispositivo que contiene ese archivo , por el
canal fluirá la secuencia de datos.
Igual ocurre al intentar escribir en un archivo.
Flujos de datos (Streams)
 La Entrada/Salida de Java se organiza generalmente
mediante objetos llamados Streams
Un Stream es la generalización de un fichero:
 secuencia ordenada de datos con un determinado origen
y destino
 su origen o destino puede ser un
fichero, pero también un string o un dispositivo (p.e. el
teclado)

 Las clases relacionadas con streams se encuentran


definidas en el paquete java.io (io es la abreviatura de
Input/Output)
Archivos y Flujos (Streams)
Para poder usar un stream primero hay que abrirle

• se abre en el momento de su creación


• y hay que cerrarle cuando se deja de utilizar

No importa el tipo de datos ni de donde proviene ni a


donde se dirige, los algoritmos para la lectura y
escritura de datos son escencialmente los mismos

Abrir el stream Abrir el stream


mientra haya información mientra haya información
leer información escribir la información
cerrar el stream cerrar el stream
Clasificación de los streams
 Por el tipo de datos que “transportan”:
• binarios (de bytes)
• de caracteres (de texto)

 Por el sentido del flujo de datos:


 de entrada: los datos fluyen desde el dispositivo o
fichero hacia el programa
 de salida: los datos fluyen desde el programa al
dispositivo

 Según su cercanía al dispositivo:


 iniciadores: son los que directamente vuelcan o recogen
los datos del dispositivo
 filtros: se sitúan entre un stream iniciador y el programa
Archivos y Flujos (Streams)

Java posee una colección de clases stream


las cuales soportan estos algoritmos de
lectura y escritura

Para utilizar las clases stream el programa


deberá importar el paquete java.io donde se
encuentran todas las clases necesarias para
dar entrada/salida a las aplicaciones.
Jerarquía para flujos de caracteres
 Clase para lectura de Caracteres

Clase abstracta

Clases en gris sólo leen o escriben.


Clases en blanco hacen algún tipo de procesamiento.

 Clase para escritura de caracteres

Clase abstracta

PrintWriter 17
Jerarquía para flujos de bytes
 Lectura de bytes

Clase abstracta

 Escritura de bytes
Clase abstracta

18
Uso de los streams
 Normalmente se utilizan por parejas
 formadas por un stream iniciador y un filtro
Objetos Stream predefinidos
 System.out: Salida estándar (consola)
 objeto de la clase PrintStream (subclase de
OutputStream) - métodos print, println, printf, ...

 System.err: Salida de error (consola)


• también es un objeto de la clase PrintStream

 System.in: Entrada estándar (teclado)


 objeto de la clase InputStream
Streams
 Habra ocasiones en las que tengamos que pasar de
streams tipo byte a tipo carácter. En esos casos usaremos
estas dos clases:
 java.io.InputStreamReader
Lee bytes y nos devuelve caracteres
 java.io.OutputStreamWriter
Le damos caracteres y escribe bytes

 Los streams se abren implicitamente en su creación


 Los streams se cierran explicitamente mediante el metodo
 public void close() throws IOException
Character Streams
 Leen o escriben caracteres (16 bits)
 Para leer hay que usar la clase java.io.Reader o
cualquiera de las clases que heredan de ella
 Para escribir hay que usar la clase java.io.Writer o
cualquiera de las clases que heredan de ella
 Pero ambas clases no pueden ser instanciadas puesto
que son abstractas. Se reciben como resultado de la
ejecución de algún método
 Suelen usarse para manejar textos
Byte Streams
 Leen o escriben bytes (8 bits)
 Para leer hay que usar la clase java.io.InputStream o
cualquiera de las clases que heredan de ella

 Para escribir hay que usar la clase java.io.OutputStream o


cualquiera de las clases que heredan de ella

 Pero ambas clases no pueden ser instanciadas puesto que


son abstractas. Se reciben como resultado de la ejecución
de algún método

 Suelen usarse para manejar imágenes, sonidos…


Filtros
 En el paquete java.io.* tenemos unas serie de clases
abstractas que define como filtrar el contenido que
viene o va a un stream
 Son las siguientes:
 Java.io.FilterInputStream
 Java.io.FilterOutputStream
 Java.io.FilterReader
 Java.io.FilterWriter

 Se suelen usar las clases que heredan de ellas


Filtros
 Los filtros se construyen pasando como parámetro otro
stream ( o filtro) al que van a complementar

 Alguno filtros interesantes son:


 Mantienen en buffer las lecturas y escrituras para mejorar
el rendimiento
 Java.io.BufferedInputStream y java.io.BufferedReader
 Java.io.BufferedOutputStream y java.io.BufferedWriter
 Leen o escriben tipos primitivos en vez de bytes
 Java.io.DataInputStream
 Java.io.DataOutpuStream
Creación de archivo
Escritura de ficheros de texto
Clase FileWriter
Clase PrintWriter
Ejemplo escritura archivo
Archivo generado
Escritura de texto con formato
 La clase PrintWriter dispone de una operación de
salida de texto con formato, llamada printf
• el objeto System.out que representa la pantalla, también
• está copiada del lenguaje C
• el primer parámetro es el string de formato
• los siguientes son un número variable de parámetros
String de formato
Especificación de anchura y
precisión
 Puede añadirse después del "%" (y el carácter de
opción si lo hay) la especificación de anchura
mínima y/o número de decimales; ejemplos
Ejercicio
Lectura de archivos de texto
Clase FileReader
Clase Scanner
Principales operaciones
Scanner
Excepciones que puede
lanzar
Ejercicio
Utilizando BufferReader
Ejercicios adicionales
 dado un fichero de texto,
contar el número de
veces que aparecen las
vocales en él.
Ejercicios adicionales
 La clase vehiculo tiene
atributos: placa, año,
modelo

 Una lista de vehículos


contiene 4 vehículos

 Generar un archivo de
vehículos

 Presentar los vehículos


que son superiores al
año 2015

También podría gustarte