PDF de programación - Curso De Java - Tema 8. Entrada/Salida

Imágen de pdf Curso De Java - Tema 8. Entrada/Salida

Curso De Java - Tema 8. Entrada/Salidagráfica de visualizaciones

Publicado el 14 de Enero del 2017
705 visualizaciones desde el 14 de Enero del 2017
340,6 KB
14 paginas
Creado hace 17a (23/04/2007)
Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

Tema 8. Entrada/Salida

154

8. Entrada/Salida – Paquete java.io

Object

File

InputStream

OutputStream

FileInputStream FilterInputStream

FileOutputStream FilterOutputStream

DataInputStream

DataOutputStream

ObjectInputStream

ObjectOutputStream

David Contreras Bárcena

155

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

8. Entrada/Salida – Paquete java.io

Object

Reader

Writer

BufferedReader

InputStreamReader

BufferedWriter

OutputStreamWriter

PrintWriter

FileReader

FileWriter

David Contreras Bárcena

156

8. Entrada/Salida – Paquete java.io
El paquete java.io proporciona un marco de trabajo para realizar
operaciones de entrada y salida entre nuestro programa java y
cualquier dispositivo externo al sistema (teclado, consola, ficheros,
maquinas remotas,...)
Se puede tener cierta independencia entre el programa Java y el
dispositivo gracias a la utilización de streams.
Un stream es un elemento software que permite el intercambio de un
flujo de bits entre dos entes en un solo sentido.
Para una operación de lectura y escritura contra un fichero, por
ejemplo, necesitaríamos dos streams, uno de entrada y otro de salida.
Las clases InputStream y OutputStream implementan en Java esta
funcionalidad.

David Contreras Bárcena

157

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

8. Entrada/Salida – Paquete java.io
La API de Java diferencia entre los streams de caracteres y streams
de bytes.
Streams de bytes (InputStream y OutputStream)

Diseñados para operar a nivel de byte.
Hay ciertos dispositivos que sólo pueden trabajar a este nivel.

Streams de caracteres (Reader y Writer):

Diseñados para optimizar las operaciones con cadenas de caracteres.
Posteriores a las anteriores.
Soportan codificaciones Unicode-16.
Cualquier fichero de texto puede ser accedido directamente a través de este tipo
de stream.
Existen dispositivos, que aunque están preparados para enviar/recibir
información de esta naturaleza, no pueden tratatrse directamente con este
stream. En estos casos, se deberá envolver el stream de bytes con un stream de
caracteres: (ver diap. sig.)

InputStreamReader
OutputStreamReader

David Contreras Bárcena

158

8. Entrada – Modo de Operación

INPUTSTREAM

Byte

Tipos de

datos

readUTF()
readInt()

Objetos

readObject()

READER
Líneas de
caracteres

readLine()

read(byte)

ObjectInputStream

BufferedReader

DataInputStream

InputStreamReader

FileInputStream

InputStream

FileReader

File / String

Fichero

Otros disp. I/O

Fichero

David Contreras Bárcena

159

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

8. Salida – Modo de Operación

OUTPUTSTREAM

Byte

datos

Tipos de
writeUTF(String)
writeInt(int)

Objetos

writeObject(Object)

write(byte[])

ObjectOutputStream

DataOutputStream

WRITER

Líneas de
caracteres
println(String)

PrintWriter

BufferedWriter

OutputStreamWriter

FileOutputStream

OutputStream

FileWriter

File / String

Fichero

Otros disp. I/O

Fichero

David Contreras Bárcena

160

8. Entrada/Salida – Excepciones

Object

Throwable

Exception

IOException

EOFException

FileNotFoundException

InterruptedIOException

UTFDataFormatException

OptionalDataException

David Contreras Bárcena

161

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

8. Clase File
Implementa un fichero del sistema de archivos.
Se emplea para obtener información del fichero sobre el cual vamos a
trabajar.
Métodos:

String getName()
String getPath()
boolean renameTo(File)
boolean exists()
boolean delete()
boolean mkdir()
boolean isDirectory()
...

David Contreras Bárcena

162

8. Clase File - Ejemplo

import java.io.*;
public class FileInfo
{

public static void main(String[] args)
{

File path;
path =new File(args[0]);
String exists =path.exists()? "Si": "No";
String canRead =path.canRead()? "Si": "No";
String canWrite = path.canWrite()? "Si": "No";
String isFile = path.isFile()? "Si": "No";
String isDir = path.isDirectory()? "Si": "No";
System.out.println("Existe :"+exists);

if (path.exists()){

System.out.println("De lectura :"+canRead);
System.out.println("De Escritura :"+canWrite);
System.out.println("Es un directorio :"+isDir);
System.out.println("Es un fichero :"+isFile);

}

}

}

David Contreras Bárcena

163

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

8. Clase FileOutputStream
Permite abrir un fichero de texto para ser tratado en modo escritura.
Sobre este objeto se pueden realizar operaciones byte a byte
directamente.
Métodos:

write()

Ejemplo:
byte b = b[1024];
fos= new FileOutputStream (fichero);
bos = new BufferedOutputStream(fos);

for(i=0;b[i] != 0; i++)

bos.write(b[i]);


fis.close();

David Contreras Bárcena

164

8. Clase FileInputStream
Permite abrir un fichero de texto para ser tratado en modo lectura
secuencialmente byte a byte.
Métodos:
read()
Ejemplo:
byte b = b[1024];
fis= new FileInputStream(fichero);

int i = fis.read(b);
String s = new String(b);

fis.close();

David Contreras Bárcena

165

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

8. Clase DataOutputStream
La escritura se realiza considerando la información como tipos de
datos.
Métodos:

writeByte(byte);
writeUTF(String);
writeChar(int);

writeInt(int);
writeChars(String);
writeBytes(String);

FileOutputStream(“personas.dat"));

Ejemplo:
DataOutputStream dos = new DataOutputStream( new
dos.writeDouble(dni)
dos.writeChar('\t');
dos.writeInt(edad);
dos.writeChar('\t');
dos.writeUTF(nombre);
dos.writeChar('\n');

David Contreras Bárcena

166

8. Clase DataInputStream
La lectura se realiza considerando la información como tipos de datos
Métodos:

byte readByte();
String readUTF();
char readChar();

int readInt();

String readLine();

Ejemplo:
DataInputStream dis = new DataInputStream(
new FileInputStream(“personas.dat”));

dni = dis.readDouble();
dis.readChar(); // elimina el tabulador
edad = dis.readInt();
dis.readChar(); // elimina el tabulador
nombre = dis.readUTF();

David Contreras Bárcena

167

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

8. Clase ObjectOutputStream()
Se exporta el estado de un objeto a una cadena de bytes.
Los objetos deben ser serializables.
Métodos:

writeObject();

Ejemplo:
FileOutputStream fos = new

FileOutputStream(“Fechas.txt");

ObjectOutputStream s = new ObjectOutputStream(fos);
s.writeObject(“Hoy");
s.writeObject(new Date());
s.flush();
s.close();

David Contreras Bárcena

168

8. Clase ObjectInputStream()
Se importa el estado de un objeto de una cadena de bytes.
Los objetos deben ser serializables.
Métodos:

readObject();

Ejemplo:
FileInputStream fis = new FileInputStream(“Fechas.txt");
ObjectInputStream s = new ObjectInputStream(fis);
String hoy = (String)s.readObject();
Date fecha = (Date)s.readObject();
s.close();

David Contreras Bárcena

169

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

8. Clase PrintWriter
Escritura optimizada de un fichero de texto a nivel de líneas.

import java.io.*;
class EscribeLinea
{

try
{

public static void main(String args[])
{

PrintWriter pw = new PrintWriter(new
BufferedWriter(new FileWriter(args[0])), true);
pw.println("Primera linea del fichero");
pw.println("Segunda linea del fichero");
pw.println("Tercera linea del fichero");
pw.close();

}
catch(IOException e)
{
}

}

}

System.out.println(“Se produjo un error de E/S");

David Contreras Bárcena

170

8. Clase BufferedReader (con FileReader)
Las lecturas se realizan a nivel de líneas de caracteres.
Se apoya en la clase FileReader.
El método más importante que posee es readLine().

import java.io.*;
class LeeLinea
{

try
{

public static void main(String args[])
{

String s=“”;
BufferedReader br=new BufferedReader(new
while ((s = br.readLine()) != null )
br.close();

FileReader(args[0]));
System.out.println(s);

}
catch(IOException e)
{
}

}

}

System.out.println(“Se produjo un error de E/S");

David Contreras Bárcena

171

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

8. Clase BufferedReader (con FileInputStream)
Existen casos en los tendremos que leer líneas de caracteres sobre
dispositivos que trabajan con streams (p.e. el Teclado).
Entones utilizaremos las clases InputStreamReader o
OutputStreamWriter.

import java.io.*;
class LeeLinea
{

public static void main(String args[])
{

try
{

String s=“”;
BufferedReader br=new BufferedReader(new
InputStreamReader(new FileInputStream(args[0])));
while ((s = br.readLine()) != null )
br.close();
System.out.println("Excepción E/S: "+e);

} catch(IOException e) {
}

System.out.println(s);

}

}

David Contreras Bárcena

172

8. EOFException - Ejemplo

import java.io.*;
class EOF
{

byte ch;
try
{

public static void main(String args[])
{

DataInputStream d = new DataInputStream(new

FileInputStream("EOF.java"));

while (true){

ch = d.readByte();
System.out.print((char)ch);

}
catch(EOFException eof)
{

}

System.out.println(">>Terminacion normal del programa");

David Contreras Bárcena

173

David Contreras Bárcena - ETSI

Lenguaje de Programación JAVA – 2º IINF y 2º ITIG

Lenguaje JAVA

8. EOFException - Ejemplo

catch(FileNotFoundException noFile)
{

System.out.println(">>El Fichero no se encuentra"+noFile);

}
catch(IOException io)
{

}

catch(Exception e)
{

System.out.println(">>Error de IO"+io);

System.out.println(">>Salida anormal del programa"+e);

}

}

}

David Contreras Bárcena

174

8. Concatenación de Streams
Podemos concatenar ficheros como si se trataran de cadenas, mediante la
clase SequenceInputStream.

i
  • Links de descarga
http://lwp-l.com/pdf934

Comentarios de: Curso De Java - Tema 8. Entrada/Salida (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