PDF de programación - Fundamentos de Computadores y Lenguajes - 8. Entrada/salida con ficheros

Imágen de pdf Fundamentos de Computadores y Lenguajes - 8. Entrada/salida con ficheros

Fundamentos de Computadores y Lenguajes - 8. Entrada/salida con ficherosgráfica de visualizaciones

Publicado el 6 de Junio del 2017
812 visualizaciones desde el 6 de Junio del 2017
292,0 KB
19 paginas
Creado hace 14a (11/05/2009)
UNIVERSIDAD
DE CANTABRIA

Fundamentos de Computadores y
Lenguajes
1. Elementos básicos de los lenguajes
2. Instrucciones de control
3. Tipos de datos
4. Métodos
5. Modularidad y Abstracción
6. Tratamiento de errores
7. Entrada/salida simple
8. Entrada/salida con ficheros

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
4

© Michael González Harbour

11/ma/09

1

Fundamentos de Computadores y
Lenguajes
7. Entrada/salida con ficheros
• 1. Conceptos básicos
• 2. Entrada/salida de texto
• 3. Entrada/salida de texto con formato
• 4. Entrada/salida binaria

UNIVERSIDAD
DE CANTABRIA

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

2

1. Conceptos básicos
La Entrada/Salida de Java se organiza generalmente mediante
objetos llamados Streams
Un Stream es una secuencia ordenada de datos con un
determinado origen o destino
Hay dos tipos de streams:
• de bytes (binarios): están pensados para ser leídos por un

UNIVERSIDAD
DE CANTABRIA

programa

• de caracteres (de texto): están pensados para ser leídos

y/o creados por una persona

En caso de error, muchos de los métodos de los streams lanzan
IOException y otras excepciones

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

3

Uso de los Streams
Los streams se usan encadenados. Por ejemplo:
Binarios

Objeto

Objeto

ObjectOutputStream

ObjectInputStream

bytes

bytes

FileOutputStream

FileInputStream

De Texto:

String

String

PrintWriter

FileWriter

carac-
teres

BufferedReader

FileReader

UNIVERSIDAD
DE CANTABRIA

Fichero

Fichero

Fichero

Fichero

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

4

Jerarquía de clases
ficheros binarios
OutputStream -> escritura de ficheros binarios
• FileOutputStream -> escribe bytes en un fichero
• ObjectOutputStream -> para escribir objetos y variables en un
OutputStream

UNIVERSIDAD
DE CANTABRIA

InputStream -> lectura de ficheros binarios
• FileInputStream -> lee bytes de un fichero
• ObjectInputStream -> lee objetos y variables de un
InputStream

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

5

Jerarquía de clases
ficheros de texto
Reader -> lectura de ficheros de texto Unicode
• FileReader-> lee texto de un fichero
• BufferedReader -> lee texto (línea a línea) de un Reader
Writer -> escritura de ficheros de texto Unicode
• FileWriter-> escribe texto en un fichero
• PrintWriter-> para escribir texto (strings) en un Writer

UNIVERSIDAD
DE CANTABRIA

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

6

Objetos predefinidos
System.out es un objeto de la clase OutputStream que
representa la pantalla
System.in es un objeto de la clase InputStream que representa
el teclado

UNIVERSIDAD
DE CANTABRIA

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

7

2. Entrada/salida de texto
Salida de texto
La salida de texto básica sobre ficheros se consigue con la clase
FileWriter

UNIVERSIDAD
DE CANTABRIA

Descripción

Constructor. Requiere el nombre del
fichero. Lo crea si no existe
Sincronizar
Cerrar

Declaración
FileWriter(String s)

void flush()
void close()

String

PrintWriter

FileWriter

carac-
teres

Fichero

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

8

Salida de texto (cont.)
La salida de texto formateado es más sencilla con un objeto
PrintWriter

UNIVERSIDAD
DE CANTABRIA

Descripción

Constructor. Requiere un Writer
Escribir un string
Escribir un string con retorno de
línea
Sincronizar
Cerrar

Declaración

PrintWriter(Writer writer)
void print(String str)
void println(String str)

void flush()
void close()

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

9

Ejemplo:
Programa que escribe en un fichero de texto números enteros y
reales

UNIVERSIDAD
DE CANTABRIA

import java.io.*;

public class EscribeTexto {

public static void main(String[] args) {

int i=1, j=2, k=3;
double x=1.0,y=6.023e23;

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

10

Ejemplo:

UNIVERSIDAD
DE CANTABRIA

try {
FileWriter fich = new FileWriter("d1.txt");
PrintWriter sal = new PrintWriter(fich);
try {
sal.println("Enteros "+i+" "+j+" "+k);
sal.println("Reales "+x+" "+y);
} finally {
sal.close();
fich.close();
} // try
} catch (IOException e) {
System.out.println("Error "+e);
} // try
} // main
} // clase

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

11

Fichero generado

Enteros 1 2 3
Reales 1.0 6.023E23

UNIVERSIDAD
DE CANTABRIA

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

12

Entrada de texto
La entrada de texto básica sobre ficheros se consigue con la clase
FileReader, cuyas operaciones son:

UNIVERSIDAD
DE CANTABRIA

Descripción

Declaración

Constructor. Requiere el nombre del
fichero. Si no existe lanza
FileNotFoundException
Cerrar

FileReader(String s)throws
FileNotFoundException

void close()

String

BufferedReader

FileReader

carac-
teres

Fichero

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

13

Entrada de texto (cont.)
La entrada de texto es más difícil que la salida
Se puede utilizar la clase BufferedReader: para leer texto línea a
línea

UNIVERSIDAD
DE CANTABRIA

Descripción

Declaración

Constructor. Requiere Un Reader. BufferedReader(Reader reader)
Leer un string. Retorna null si
se ha llegado al final
Cerrar

String readLine()

void close()

Luego, cada línea leída se convierte a otros datos con las
operaciones parseInt(), parseDouble(), etc.

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

14

UNIVERSIDAD
DE CANTABRIA

Ejemplo
Leer parejas de texto (una línea) y número (otra línea) y escribirlas
en pantalla; ejemplo de fichero de entrada:
primero
1.0
segundo
3.0
tercero
4.5
cuarto
8.0
quinto
34R.5
sexto
1.0

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

15

Ejemplo (cont.)

import java.io.*;

public class LeeStrings {

UNIVERSIDAD
DE CANTABRIA

/**
* Programa que lee varias parejas de textos y
* números de un fichero de texto
*/
public static void main(String[] args) {

String str,num;
double x;
int sep=0;

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

16

Ejemplo (cont.)

UNIVERSIDAD
DE CANTABRIA

try {
FileReader fich = new FileReader("d2.txt");
BufferedReader ent = new BufferedReader(fich);
try {
do {
// leer el texto
str=ent.readLine();
if (str!=null) {
// si hay texto escribirlo
System.out.println("Texto: "+str);
// leer el número real como texto
num=ent.readLine();
if (num==null || num.equals("")) {
System.out.println("Falta el nº");
} else {

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

17

Ejemplo (cont.)

UNIVERSIDAD
DE CANTABRIA

// convertir el texto a numero
try {
x=Double.parseDouble(num);
System.out.println("Numero:"+x);
} catch (NumberFormatException e) {
System.out.println ("Error al”+
“leer numero real: "+num);
} // try
} // if
} // if
} while (str!=null);
} finally {
ent.close();
fich.close();
} // try

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

18

Ejemplo (cont.)

UNIVERSIDAD
DE CANTABRIA

} catch (IOException e) {
System.out.println("Error "+e);
} // try
} // main
} // clase

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

19

UNIVERSIDAD
DE CANTABRIA

Salida para el ejemplo
El programa muestra lo siguiente en la pantalla:
Texto: primero
Numero: 1.0
Texto: segundo
Numero: 3.0
Texto: tercero
Numero: 4.5
Texto: cuarto
Numero: 8.0
Texto: quinto
Error al leer numero real: 34R.5
Texto: sexto
Numero: 1.0

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

20

UNIVERSIDAD
DE CANTABRIA

3. Entrada/Salida 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
• luego viene un número variable de parámetros
Ejemplo
System.out.printf
("%s de %3d años", nombre, edad);
Produce la salida (suponiendo nombre="Pedro", edad=18)
Pedro de 18 años

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

21

String de formato
Contiene caracteres que se muestran tal cual
• y especificaciones de formato que se sustituyen por los

sucesivos parámetros

UNIVERSIDAD
DE CANTABRIA

Especificaciones de formato más habituales:

%d enteros
%c caracteres
%s string
%f float y double, coma fija
%e float y double, notación exponencial
%g float y double, exponencial o coma fija
%n salto de línea en el formato del sist. operat.
%% el carácter %

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

11/ma/09

22

String de formato
Puede lanzarse IllegalFormatException si el formato no
corresponde al parámetro
Después del carácter % se pue
  • Links de descarga
http://lwp-l.com/pdf4305

Comentarios de: Fundamentos de Computadores y Lenguajes - 8. 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