entrada y salida java. clase file la clase file proporciona mucha informacion relacionada con...

25
Entrada y Salida Java

Upload: cristian-carnero

Post on 23-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Entrada y Salida

Java

Page 2: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Clase File

• La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre esos archivos.

• Constructores• File miArchivo;• miArchivo=new File(“pooi104/prueba1”);• O miArchivo=new File(“pooi104”,”prueba1”);• O File miDirectorio=new File(“pooi104”);• miArchivo=new File(miDirectorio,”prueba1”);

Page 3: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

La clase File contiene los siguiente metodos:

• String getName()

• String getPath()

• String getAbsolutePath()

• String getParent()

• Boolean renameTo(File nuevonombre)

• Boolean exists()

Page 4: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Continuacion…

• Boolean canWrite();• Boolean canRead()• Boolean isFile()• Boolean isDirectory()• Boolean isAbsolute()

• Long lastModified()• Long length()• Boolean mkdir()• String[] list()

Page 5: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Streams de entrada

• Hay muchas clases dedicadas a la obtención de entrada desde distintas fuentes. Hay dos que son las clases padre de todas las demás, que son: la clase Reader (utilizada para entrada de caracteres) y la clase ImputStream (utilizada para estrada de bytes).

Jerarquia de clases de entrada de caracteres

Page 6: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Continua

• Jerarquia de clases de entrada de bytes.

Page 7: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

• Jerarquia de clases de salida de caracteres

Page 8: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

• Jerarquia de clases de salida de bytes

Page 9: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Objetos FileInputStream y FileReader

• Los objetos FileInputStream representan archivos binarios accedidos en orden secuencial, byte a byte, y los objetos FileReader representan archivos de texto accedidos en orden secuencial carácter a carácter. Con FileInputStream, se puede elegir acceder a un byte, varios bytes o al fichero completo, y también podemos hacer lo mismo con los caracteres de FileReader.

Page 10: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Abrir un archivo con FileInputStream o con

FileReaderFileInputStream miFicheroSt;

miFicheroSt = new FileInputStream( "/etc/kk" );

De otra manera

File miFichero;

FileInputStream miFicheroSt;

miFichero = new File( "/etc/kk" );

miFicheroSt = new FileInputStream(miFichero);

FileReader miFicheroRd;

miFicheroRd = new FileReader( "/etc/kk" );

De otra manera

File miFicherot;

FileReader miFicheroRd;

miFicherot = new File( "/etc/kk" );

miFicheroRd = new FileReader(miFicherot);

Page 11: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Lectura de un FileInputStream o de un FileReader

int read();

• int read( byte b[] ); int read( char b[] );

• Lee un byte o un carácter y devuelve -1 al final del stream.

• Llena todo el array, si es posible. Devuelve el número de bytes  o caracteres leídos o -1 si se alcanzó el final del stream.

Page 12: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

continuacion read()

• int read( byte b[],int offset,int longitud ); int read( char b[],int offset,int longitud);

• Lee longitud bytes o caracteres en b comenzando por b[offset]. Devuelve el número de bytes o caracteres leídos o -1 si se alcanzó el final del stream

Page 13: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Escritura un archivo con FileOutputStream y FileWriter

• void write( int b );

• void write( byte b[] ); void write( char b[] ); void write( String str );

• void write( byte b[],int offset,int longitud ); void write( char b[],int offset,int longitud ); void write( String str,int offset,int longitud );

• Escribe un byte o un carácter.

• Escribe todo el array o el string , si es posible.

• Escribe longitud bytes o caracteres de b o del string comenzando por la posición offset.

Page 14: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Para cerrar los archivos

• Cuando se termina de trabajar con un archivo, hay dos formas de cerrarlo: explícitamente, o implícitamente cuando se recicla el objeto (el garbage collector se encarga de ello).

• Para cerrarlo explícitamente, se utiliza el método close():

•     miFicheroSt.close();

Page 15: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Objetos DataInputStream

• Los objetos DataInputStream son streams de datos que pueden leer cualquiera de las variables de tipo nativo, como floats, ints o chars. Se utilizan DataInputStream con archivos binarios, y no tiene equivalente de caracteres.

Page 16: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Abrir y cerrar con DataInputStream • Para abrir y cerrar un objeto DataInputStream, se utilizan los mismos métodos

que para FileInputStream: DataInputStream miDStream;

FileInputStream miFStream; // Obtiene un controlador de fichero

miFStream = new FileInputStream ("/etc/ejemplo.dbf" ); //Encadena

//un fichero de entrada de datos miDStream = new DataInputStream( miFStream ); // Ahora se pueden utilizar los dos streams de entrada para  ////acceder al fichero (si se quiere...) miFStream.read( b ); i = miDStream.readInt(); // Cierra el fichero de datos explícitamente //Siempre se cierra

//primero el fichero stream de mayor nivel

miDStream.close();miFStream.close();

Page 17: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Lectura con DataInputStream • Se puede utilizar

read() igual que con FileInputStream.

• Pero tambien cuenta con otros metodos diseniados para leer cada un de lo tipos primitivos de java

• Cada metodo leera un valor del tipo indicado

• byte readByte()  • Int readUnsignedByte()• short readShort()• int

readUnsignedShort()     • char readChar()    • int readInt()    • long readLong()     • float readFloat()    • double readDouble()

Page 18: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Escritura con DataOutputStream

• Se puede utilizar write() igual que con FileOutputStream.

• Pero tambien cuenta con otros metodos diseniados para escribit cada un de lo tipos primitivos de java

• void writeBoolean( boolean b );   

•   void writeByte( int i );    • void writeShort( int i );     • void writeChar( int i );    • void writeInt( int i );     • void writeFloat( float f );     • void writeDouble( double d

);    

Page 19: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

continua

void writeBytes( String s );    

void writeChars( string s );

• Para escribir cadenas, se tienen dos posibilidades: bytes y caracteres.

• bytes son var de 8 bits

• caracteres son de 16 bits.

• Si las cadenas utilizan caracteres Unicode, debemos escribirlas con writeChars().

Page 20: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Archivos de acceso aleatorio

• Si deseamos saltar de un registro a otro dentro de un archivo java proporciona la clase RandomAccessFile

• Para crear un objeto RandomAccessFile se puede hacer de las siguientes dos formas:

miRAFile = new RandomAccessFile( String nombre,String modo );

miRAFile = new RandomAccessFile( File fichero,String modo );

• En donde modo indica si es de lectura ( r ) o de lectura/escritura ( rw)

Page 21: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Por ejemplo

RandomAccessFile miRAFile;   

miRAFile = new RandomAccessFile( "/tmp/kk.dbf", "rw" );

• Esta clase cuenta con los mismos metodos de lectura y de escritura que DataInputStream y DataOutputStram con read() y write()

Page 22: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Pero tambien cuentan con metodos para moverse dentro de un archivo

• Long getFilePointer

• Void seek(long pos)

• Regresa la posicion actual del puntero del archivo.

• Coloca al puntero del archivo en la posicion indicada; desplazandoce pos bytes desde el comienzo del archivo. La posicion 0 indica el comienzo del archivo

Page 23: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

continuacion

• Long length() • Regresa la longitud del archivo. La posicion length indica el final del archivo

Page 24: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

Agregar informacion ejemplo

miRAFile = new RandomAccessFile( "/tmp/kk.log","rw" );    

//abre el archivo kk.log como de lectura y escritura

miRAFile.seek( miRAFile.length() );

//coloca el apuntador del archivo al final de este

    // Cualquier write() que hagamos a partir de este punto del código     // añadirá información al fichero

Page 25: Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre

ejemploimport java.io.*; /* Cada vez que ejecutemos este programita, se

incorporara una nueva linea al fichero de log que se crea la primera vez que se ejecuta *//

class Log {     public static void main( String args[] ) throws

IOException { RandomAccessFile miRAFile; String s = "Informacion a incorporar\nTutorial de

Java\n";         // Abrimos el fichero de acceso aleatorio         miRAFile = new RandomAccessFile(

"/tmp/java.log","rw" );         // Nos vamos al final del fichero         miRAFile.seek( miRAFile.length() );         // Incorporamos la cadena al fichero              miRAFile.writeBytes( s );         // Cerramos el fichero         miRAFile.close();         }     }