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ó.