PDF de programación - Prácticas de Programación - Tema 7. Entrada/salida con ficheros

Imágen de pdf Prácticas de Programación - Tema 7. Entrada/salida con ficheros

Prácticas de Programación - Tema 7. Entrada/salida con ficherosgráfica de visualizaciones

Publicado el 14 de Enero del 2017
1.615 visualizaciones desde el 14 de Enero del 2017
300,6 KB
24 paginas
Creado hace 13a (18/05/2010)
Prácticas de Programación

Tema 1. Introducción al análisis y diseño de programas
Tema 2. Clases y objetos
Tema 3. Herencia y Polimorfismo
Tema 4. Tratamiento de errores
Tema 5. Aspectos avanzados de los tipos de datos
Tema 6. Modularidad y abstracción: aspectos avanzados

Tema 7. Entrada/salida con ficheros

Tema 8. Verificación y prueba de programas

Prácticas de Programación

Tema 7. Entrada/salida con ficheros

© M. Aldea y M. González

18/05/10

Tema 7. Entrada/salida con ficheros

7.1. Ficheros
7.2. Flujos de datos (streams)
7.3. Salida binaria
7.4. Entrada binaria
7.5. Salida de texto
7.6. Entrada de texto
7.7. Entrada/Salida de texto con formato
7.8. Uso de ficheros como tablas
7.9. Resumen
7.10. Bibliografía

Prácticas de Programación

Tema 7. Entrada/salida con ficheros

7.1 Ficheros
Fichero:

© M. Aldea y M. González

18/05/10

7.1 Ficheros

• secuencia de bytes en un dispositivo de almacenamiento:

disco duro, CD, DVD, memoria USB, ...

• se puede leer y/o escribir
• se identifica mediante un nombre (pathname)

- /home/pepe/documentos/un_fichero

Tipos de ficheros:

• programas: contienen instrucciones
• datos: contienen información, como números (enteros o

reales), secuencias de caracteres, ...

• en algunos sistemas operativos (como Linux) también son

ficheros los directorios, los dispositivos, las tuberías, ...

Prácticas de Programación

© M. Aldea y M. González

18/05/10



1



2

3

Tema 7. Entrada/salida con ficheros

Ficheros de texto y binarios
Tipos de ficheros de datos:

7.1 Ficheros

• de bytes (binarios): pensados para ser leídos por un programa
• de caracteres (de texto): están pensados para ser leídos

y/o creados por una persona

Fichero binario

0
1
2
3
4
5
6
7
...

00000000
00000000
00000000
00001110
00000000
00000000
00000000
00100001

...

Un número
entero: 14

Otro número
entero: 33

Fichero de texto

0
1
2
3
4
5
...

00110001
00110100
01101000
01101111
01101100
01100001

...

‘1’ (código ASCII 0x31)
‘4’ (código ASCII 0x34)
‘h’ (código ASCII 0x68)
‘o’ (código ASCII 0x6F)
‘l’ (código ASCII 0x6C)
‘a’ (código ASCII 0x61)

• Para “entender” los contenidos de un fichero es necesario

conocer de antemano el tipo de datos que contiene

Prácticas de Programación

Tema 7. Entrada/salida con ficheros

© M. Aldea y M. González

18/05/10

Punteros de lectura y escritura

4

7.1 Ficheros

• 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 sus

contenidos

Ejemplo:

puntero
de lectura

Prácticas de Programación

Tema 7. Entrada/salida con ficheros

lectura de un
int (4 bytes)

lectura de un
short (2 bytes)

puntero
de lectura

© M. Aldea y M. González

18/05/10

puntero
de lectura

5

7.2 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:

7.2 Flujos de datos (streams)

• secuencia ordenada de datos con

un determinado origen y destino
• su origen o destino puede ser un

Stream

fichero, pero también un string o un dispositivo (p.e. el teclado)

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

Las clases relacionadas con streams se encuentran definidas en
el paquete java.io (io es la abreviatura de Input/Output)

Prácticas de Programación

© M. Aldea y M. González

18/05/10

6

Tema 7. Entrada/salida con ficheros

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:

7.2 Flujos de datos (streams)

• 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

Prácticas de Programación

Tema 7. Entrada/salida con ficheros

© M. Aldea y M. González

18/05/10

Uso de los Streams
Normalmente se utilizan por parejas

• formadas por un stream iniciador y un filtro

7.2 Flujos de datos (streams)

Binarios

Objeto

Objeto

ObjectOutputStream

ObjectInputStream

De Texto:
String

FileWriter

bytes

bytes

carac-
teres

FileOutputStream

FileInputStream

PrintWriter

Fichero

Fichero

Fichero

Fichero

String

BufferedReader

FileReader

Prácticas de Programación

Tema 7. Entrada/salida con ficheros

© M. Aldea y M. González

18/05/10

Jerarquía de clases

Principales Streams binarios

7.2 Flujos de datos (streams)

7

8

• OutputStream: escritura de ficheros binarios

• FileOutputStream (iniciador): escribe bytes en un fichero
• ObjectOutputStream (filtro): convierte objetos y variables en
arrays de bytes que pueden ser escritos en un OutputStream

• InputStream: lectura de ficheros binarios

• FileInputStream (iniciador): lee bytes de un fichero
• ObjectInputStream (filtro): convierte en objetos y variables

los arrays de bytes leídos de un InputStream

OutputStream

InputStream

FileOutputStream ObjectOutputStream

FileInputStream

ObjectInputStream

Prácticas de Programación

© M. Aldea y M. González

18/05/10

9

Tema 7. Entrada/salida con ficheros

Jerarquía de clases

Principales Streams de caracteres

7.2 Flujos de datos (streams)

• Writer: escritura de ficheros de texto

• FileWriter (iniciador): escribe texto en un fichero
• PrintWriter (filtro): permite convertir a texto variables y

objetos para escribirlos en un Writer

• Reader: lectura de ficheros de texto

• FileReader (iniciador): lee texto de un fichero
• BufferedReader (filtro): lee texto (línea a línea) de un Reader

Writer

Reader

FileWriter

PrintWriter

FileReader

BufferedReader

Prácticas de Programación

Tema 7. Entrada/salida con ficheros

Objetos stream predefinidos
System.out: Salida estándar (consola)

© M. Aldea y M. González

18/05/10

10

7.2 Flujos de datos (streams)

• 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

Deberían ser de las clases PrintWriter y BufferedReader
• pero los streams de caracteres no existían en las primeras

versiones de Java

• siguen siendo streams binarios por compatibilidad con

versiones antiguas

Prácticas de Programación

Tema 7. Entrada/salida con ficheros

© M. Aldea y M. González

18/05/10

11

7.3 Salida binaria
Es posible escribir variables y objetos en un fichero binario
Para poder escribir un objeto su clase debe implementar la interfaz
Serializable, de la manera siguiente:

7.3 Salida binaria

import java.io.*;
public class Nombre implements Serializable
{...}

Se usa la pareja de streams FileOutputStream (iniciador) y
ObjectOutputStream (filtro)

Objeto

ObjectOutputStream

bytes

FileOutputStream

Fichero

Prácticas de Programación

© M. Aldea y M. González

18/05/10

12

Tema 7. Entrada/salida con ficheros

Clase FileOutputStream
Operaciones más habituales:

7.3 Salida binaria

Descripción

Declaración

Constructor. Requiere el nombre del
fichero. Lo crea si no existe. Si existe se
borran sus contenidos.
Lanza FileNotFoundException si el
fichero no se puede crear
Igual que el anterior, salvo en que
cuando añade es true no se borran los
contenidos, sino que los datos se aña-
den al final del fichero
Sincronizar
Cerrar

FileOutputStream(String s)
throws FileNotFoundException

FileOutputStream(String s,
boolean añade)
throws FileNotFoundException

void flush()

void close()

Prácticas de Programación

Tema 7. Entrada/salida con ficheros

Clase ObjectOutputStream
Operaciones más habituales:

© M. Aldea y M. González

18/05/10

13

7.3 Salida binaria

Descripción

Constructor.
Requiere un OutputStream
Escribir un booleano
Escribir un double
Escribir un int
Escribir un objeto
Se escriben también los objetos a los que el
objeto obj se refiere (y así recursivamente)
Sincronizar (llama a out.flush())
Cerrar (llama a out.close())

Declaración
ObjectOutputStream(
OutputStream out)

void writeBoolean(boolean b)

void writeDouble(double d)

void writeInt(int i)

void writeObject(Object obj)

void flush()

void close()

Todos los métodos (incluido el constructor) lanzan IOException

• error al acceder al OutputStream (normalmente un fichero)

Prácticas de Programación

Tema 7. Entrada/salida con ficheros

Ejemplo de escritura de objeto

© M. Aldea y M. González

18/05/10

14

7.3 Salida binaria

Añadir a la clase Agenda del problema 2 una operación para grabar
una agenda (incluyendo los contactos que contiene), a un fichero:
• Previamente ha sido necesario declarar las clases que se van a

escribir como Serializable:

import java.io.*;
public class Contacto implements Serializable {...

import java.io.*;
public class Agenda implements Serializable {...

Prácticas de Programación

© M. Aldea y M. González

18/05/10

15

Tema 7. Entrada/salida con ficheros

7.3 Salida binaria

Ejemplo de escritura de objeto (cont.)

El método a añadir a la clase Agenda es:

public void salvaAFichero(String nomFich)
throws IOException {
ObjectOutputStream sal = null;
try {
// abre los streams iniciador y filtro
sal = new ObjectOutputStream(
new FileOutputStream(nomFich));
// graba el objeto actual
sal.writeObject(this);
} finally {
if (sal != null) {
sal.close(); // cierra los streams
}
}
}

© M. Aldea y M. González

18/05/10

16

Prácticas de Programación

Tema 7. Entrada/salida con ficheros

7.4 Entrada binaria
Es posible leer variables y objetos de un fichero binario que fue
creado según lo expuesto
  • Links de descarga
http://lwp-l.com/pdf983

Comentarios de: Prácticas de Programación - Tema 7. Entrada/salida con ficheros (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad