A través de un flujo (Stream): I/O, leer/escribir, Read/Write, ya sea a un fichero, a una red o a memoria. java.io
Los Streams se abren, se utilizan y SIEMPRE se cierran con .close(). Pueden producir excepciones catch(IOException ioe)
File sirve para manejar archivos, obtener información o crearlos, pero no es un flujo. exist(), isFile(), isDirectory().
RandomAccessFile(fichero, r/rw) permite acceder a una posición concreta y empezar a leer/escribir una cantidad concreta de bytes: seek(), getFilePointer(), length(), mark(), reset(), writeDouble(), readDouble().
Con las hijas de Reader y Writer se pueden manejar Bytes (8bits) o caracteres (16bits).
Con InputStream y OutputStream bytes para datos binarios (imágenes, sonidos, videos).
InputStreamReader y OutputStreamReader para caracteres unicode (16bits) desde o hacia bytes.
FileReader (leer) y FileWriter (escribir) para ficheros de caracteres.
-BufferedReader lee caracteres y texto desde un flujo; readLine(), close()
BufferedReader br = new BufferedReader( new FileReader("ejemplo.txt") );
while ((cad = br.readLine()) != null) System.out.println(cad);
-BufferedWriter escribe caracteres y texto a un flujo en paquetes reduciendo el número de accesos; writeLine(), flush(), close()
BufferedWriter bw = new BufferedWriter( new FileWriter("salida.txt") );
bw.write(cad1);
bw.newLine();
bw.write(cad2);
bw.flush();
-PrintWriter facilita la escritura de valores primitivos y datos con print() y println()
PrintWriter salida = new PrintWriter( new BufferedWriter( new FileWriter("salida.txt") ) );
salida.println(cad1);
salida.println(cad2);
FileInputStream lee bytes desde un archivo
-InputStreamReader traduce los bytes que lee del flujo a caracteres con cierta codificación (€,ñ,í,ó):
BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream("ejemplo.txt") , "ISO-8859-1") );
SERIALIZACION: Guardar o leer un objeto entero en disco.
La clase que se vaya a serializar tiene que implementar la interfaz "Serializable".
-ObjectOutputStream escribe los objetos en un fichero en datos binarios con writeObject(objeto):
ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream("fichero.dat") );
oos.writeObject(objetoaguardar);
oos.close();
-ObjectInputStream siempre hay que hacer un cast al tipo de fichero correcto que recuperemos con readObject():
ObjectInputStream ois = new ObjectInputStream( new FileInputStream("fichero.dat") );
ClaseDestino recipiente = (ClaseDestino) ois.readObject();
No hay comentarios:
Publicar un comentario