Title: PAQUETES
1PAQUETES
Un paquete es un conjunto de clases, interfaces y
subpaquetes relacionados. El paquete define un
ámbito de visibilidad los miembros que no tienen
declaración explícita de ámbito (public,
private,etc.)
2PAQUETES
Para declarar un paquete package
ltnombregt Una declaración de package debe
aparecer en primer lugar en el archivo fuente,
antes de cualquier declaración de clase o
interface y sólo puede haber una por archivo
fuente.
3PAQUETES
El nombre de cada tipo dentro de un paquete tiene
implícitamente prefijado el nombre del
paquete. El código definido fuera del paquete que
necesita cosas definidas en el paquete, debe
importar todo el paquete con una sentencia
import, o cualificar el nombre de los tipos que
necesita anteponiéndole el nombre del paquete. La
sentencia import va detrás de cualquier linea de
package pero delante de todo lo demás.
4PAQUETES
Todo lo que está definido dentro de un paquete
está disponible para ese paquete. Las clases e
interfaces de un paquete tienen dos
accesos public una clase o interface public es
accesible a código fuera de ese paquete. Las
clases que no son public son accesibles para el
código del paquete en que se están
definiendo. Los miembros de una clase que no son
declarados como private, protected ni public,
están disponible sólo para código del paquete, es
decir tienen ámbito de paquete.
5PAQUETES
Los paquetes deben diseñarse de forma que
contengan clases relacionadas funcionalmente. Los
paquetes se pueden anidar. java.lang Los
identificadores del paquete java no son
accesibles para el código del paquete lang.
6EL PAQUETE DE E/S
- La E/S (entrada/salida) de Java se define en
términos de flujos (streams). - Los flujos son secuencias ordenadas de datos que
tienen una fuente (flujos de entrada) o un
destino (flujos de salida). - El paquete java.io, es el que contiene todos las
clases que representan estos flujos.
7EL PAQUETE DE E/S
- La clase de excepción IOException la utilizan la
mayoría de los métodos de las clases de este
paquete, sin perjuicio de que se utilicen
excepciones más específicas. - Cada vez que desea realizar alguna operación de
E/S, debo importar el paquete con import java.io.
- Este paquete contiene algunas clases abstractas,
interfaces y clases concretas.
8EL PAQUETE DE E/S
A partir de las clases abstractas y las
interfaces, la mayor parte de los flujos soportan
los métodos de esas clases básicas con pocas o
nulas adiciones. Los distintos tipos de flujos
están generalmente apareados, donde existe un
FileInputStream, suele haber un FileOutputStream.
9EL PAQUETE DE E/S
Input
Output Objetos manip. Abstractas
Input Stream Output Stream
bytes Interfaces Data Input Data
Output. tipos fundam ObjectInput
ObjectOutput objetos Concretas Data
Input Stream Data Output Stream tipos
fundam FileInputStream
FileOutputStream bytes
ObjectInputStream ObjectOutputStream
objetos
10EL PAQUETE DE E/S
Implementa Extiende
Manipula Data Stream DataInput/output
Stream tipos fun. FileStream
-------- Stream
bytes ObjectStream ObjectInput
--------- Objects
ObjectOutput
significa input o output según corresponda
11InputStream
Es una clase abstracta que define el modelo de
java para el flujo de entrada Los métodos leen y
escriben bytes desde un origen. Constructor
InputStream( )
12InputStream
- Algunos métodos
- public void close ( ) throws IOException Cierra
el flujo de entrada. Este método debe invocarse
para liberar recursos asociados con el flujo. - public abstrac int read ( ) throws IOException
lee un solo byte de datos desde el origen y
retorna la representación entera de ese byte. -
13InputStream
- public int read (byte buf) throws IOException
lee hasta que hay entrada disponible o hasta
buf.length y llena buf con los bytes leídos.
Devuelve la cantidad de bytes leídos o -1 si se
alcanzó el final del flujo. - public int read (byte buf, int off, int len)
throws IOException lee hasta que hay entrada
disponible y llena el array buf partiendo de un
desplazamiento off (se desplaza off elementos del
arreglo) y comienza a llenar buf con len bytes o
hasta que se alcanza el final del array.
14OutputStream
Es similar a InputStream, pero proporciona una
abstracción para hacer fluir bytes hacia un
destino. Todos los métodos de esta clase
devuelven un valor void y lanzan una IOException
en caso de error. Constructor public
OutputStream( )
15OutputStream
Algunos métodos public void close ( ) throws
IOException cierra el flujo de salida. Los
intentos posteriores de escritura lanzarán una
IOException. public void write (byte b)
throws IOException escribe b.length bytes desde
el array b en su stream de salida .
16OutputStream
public void write (byte b, int off, int len)
throws IOException escribe len bytes desde el
array b, comenzando con el deplazamiento de off ,
en su stream de salida. public abstrac void write
(int b) throws IOException escribe b como
byte public void flush ( ) throws IOException
vacía el flujo, de forma que los bytes contenidos
en un buffer sean expulsados del flujo.
17Tipos de flujos estándar
El paquete java.io define distintos tipos de
flujos. Los más usuales son FileInputStream File
OutputStream
Obtienen o escriben bytes a un archivo
18Tipos de flujos estándar
Estas interfaces definen métodos para transmitir
tipos primitivos Java dentro de un flujo.
DataInput DataOutput
Proporcionan una implementación por defecto de
los métodos de las interfaces.
DataInputStream DataOutputStream
19Tipos de flujos estándar
ObjectInput ObjectOutput
Extienden de DataInput y DataOutput para la
lectura y escritura de objetos. No lo soportan la
versión de Java instalada en el laboratorio. Es
soportado a partir de la versión 1.2.
20Flujos Data
Las interfaces DataInput y DataOutput definen
métodos para transmitir tipos primitivos Java
dentro de un flujo. Las clases DataInputStream y
DataOutputStream proporcionan una implementación
por defecto para cada interfaz.
21Interface DataInput
Los métodos de lectura mas usuales son boolean
readBoolean() lee un byte de entrada y retorna
true si el byte no es cero, en caso contrario
retorna false. byte readByte() lee y retorna un
byte de entrada. char readChar() lee y retorna
el valor del char. double readDouble() lee 8
bytes y retorna el valor de un double. float
readFloat() lee cuatro bytes y retorna el valor
de un float.
22Interface DataInput
void readFully(byte b) lee algunos bytes
desde un stream de entrada y los almacena en el
array b. void readFully(byte b, int off, int
len) lee len bytes desde un flujo de
entrada. int readInt() lee cuatro bytes y
retorna un valor int. String readLine() lee la
próxima línea de texto desde la entrada. long
readLong() lee ocho bytes y retorna un valor
long. short readShort() lee dos bytes y retorna
un short.
23Interface DataOutput
Los métodos de escritura mas usuales son void
write(byte b) escribe en un flujo de salida
todos los bytes del array b. void write (byte
b, int off, int len) escribe len bytes desde el
array b con un desplazamiento de off, en el flujo
de salida. void write (int b) escribe en el
flujo de salida los ocho bits de menor orden del
argumento b. void writeBoolean (boolean b)
escribe un valor booleano en el flujo de salida.
24Interface DataOutput
void writeByte(int v) escribe en el flujo de
salida los ocho bits de orden más bajo del
argumento v. void writeBytes(String s) escribe
un String en el flujo de salida. void
writeChar() escribe un valor char, el cual está
compuesto de dos bytes, en el flujo de
salida. void writeChars(String s) escribe cada
carácter del String, en el flujo de salida, en
orden, dos bytes por carácter.
25Interface DataOutput
void writeDouble(double v) escribe un valor
double, el cual está compuesto de ocho bytes, en
el flujo de salida. void writeFloat(float v)
escribe un valor float, el cual está compuesto de
cuatro bytes, en el flujo de salida. void
writeInt(int v) escribe un valor int, el cual
está compuesto de cuatro bytes, en el flujo de
salida. void writeLong(long v) escribe un valor
long, el cual está compuesto de cuatro bytes, en
el flujo de salida. void writeShort(int v)
escribe dos bytes en el flujo de salida para
representar el valor del argumento.
26La interface ObjectInput
La interface ObjectInput extiende de DataInput,
para incluir la lectura de objetos. Object
readObject() lee y retorna el objeto leído
27La interface ObjectOutput
La interface ObjectOutput extiende de DataOutput,
para incluir la escritura de objetos. void
writeObject( Object obj) escribe el objeto obj
en el flujo de salida.
28Entrada/salida por teclado
- Se debe leer una cadena y hacer la conversión
explícita en el programa. - Se utilizan las clases envolturas.
29Clases envolturas
- Son clases creadas para representar los tipos de
datos primitivos. - Boolean Character
- Integer Long
- Float Double
30Integer
- public static int parseInt( String s)
- public static Integer valueOf (String s)
- public static int intValue ( )
31Double
- public static Double valueOf (String s)
- public static double doubleValue ( )
32Float
- public static Float valueOf (String s)
- public static float floatValue ( )
33Long
- public static Long valueOf (String s)
- public static long longValue ( )
34Excepciones de entrada/salida mas usuales
FileNotFoundException indica que la apertura de
un archivo ha fracasado InterruptedIOExeception
indica que una operación de E/S se
interrumpió. IOException indica que un error de
E/S de alguna clase ocurrió.