Sei sulla pagina 1di 4

Curso de Java.

Entrada y salida de ficheros

Page 1 of 4

Me gusta

1.852

2,122 seguidores

540

Portada Routers

Android WiFi

Banda ancha Puntos de Acceso

Bittorrent PLC

Redes Java PHP

Redes Sociales Firmwares

Seguridad Informtica Manuales

Software

Buscar

Test de Velocidad

Curso de Java. Entrada y salida de ficheros


Adrin Crespo | 27 febrero 2012 10:30 | 0 comentarios

Continuamos con la entrada y salida de ficheros en el curso de Java de RedesZone.net. Para los que no os acordis, en la entrega anterior, hablamos sobre todo lo referido a la clase Scanner de Java, que nos facilitaba la lectura de ficheros de texto que siguen un determinado patrn. En la entrega de hoy, que ser la ltima entrega relacionada con entrada y salida, hablaremos sobre cmo utilizar los ficheros como tablas, es decir, si tenemos la necesidad, cmo es posible acceder a cualquier posicin del fichero como si de una tabla se tratase. Hasta ahora todos los ficheros se han manejado mediante clases que representan secuencias En muchas ocasiones es conveniente poder acceder a los datos en cualquier orden, como en una tabla Las diferencias con un array son: - Tamao no limitado a priori - Memoria persistente (no voltil) Para ello Java dispone de la clase RandomAccessFile Permite acceso aleatorio al fichero No es un Stream Se puede usar para leer, o leer y escribir a la vez En java son ficheros que contienen bytes Se numeran con un ndice que empieza en cero. Existe un ndice almacenado en el sistema que se llama el puntero de lectura/escritura Las lecturas y escrituras se hacen a partir de l, en secuencia Es posible cambiar el puntero de lectura/escritura Si escribimos pasado el final del fichero, su tamao se ampla *Operaciones ms habituales

Anlisis de producto
Routers Adaptadores WiFi Puntos de Acceso (AP) Bancos de Prueba PLC Cmaras IP Reproductores Multimedia y NAS

Fabricantes
Alfa Network ASUS Cisco Linksys Comtrend D-Link Devolo FRITZ! Huawei Kaiboer Orange Livebox Sitecom TP-Link TRENDnet Zaapa Western Digital ZyXEL

Tutoriales de ayuda
Redes Windows GNU-Linux Mac Os X Seguridad Informtica Software Curso de Redes Artculos IPsec Fabrica tu FreeNAS Curso Java Curso PHP

Firmwares
Firmware Tomato RAF Firmware DD-WRT Firmwares Comtrend Firmwares Zyxel

Sguenos!
Me gusta A 1.852 personas les gusta esto. Regstrate para ver qu les gusta a tus amigos.

*Ejemplo con tabla de datos


1 2 import java.io.*;
?

2,122 seguidores

http://www.redeszone.net/2012/02/27/curso-de-java-entrada-y-salida-de-ficheros/

13/02/2013

Curso de Java. Entrada y salida de ficheros

Page 2 of 4

18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

+Integer.SIZE/8 // publicado +Double.SIZE/8 // precio +1; // tamao par // atributos privados private String ttulo; private int publicado; // ao de publicacin private double precio; // en euros /** * Constructor al que se le pasan los datos del * libro */ public Libro(String titulo, int publicado, double precio) { // asegurarse de que el titulo no supera // maxCaracteresTtulo if (titulo.length()>maxCaracteresTtulo) { this.titulo= titulo.substring(0,maxCaracteresTtulo); } else { this.titulo=titulo; } this.publicado=publicado; this.precio=precio; } /** * Lee de fichero */ public static Libro leeDeFichero( RandomAccessFile fich) throws IOException { // lee los tres datos, por orden int publi=fich.readInt(); double prec=fich.readDouble(); String tit=fich.readLine().trim(); // crea y retorna el libro return new Libro(tit,publi,prec); } /** * Escribe en el fichero */ public void escribeEnFichero( RandomAccessFile fich) throws IOException { // escribe los tres datos, por orden fich.writeInt(publicado); fich.writeDouble(precio); fich.writeBytes(titulo+'\n'); } mtodos observadores, toString, ... } // clase Libro import java.io.*; /** * Tabla de libros persistente almacenada en * un fichero de acceso aleatorio */ public class TablaLibros { // atributos privados private RandomAccessFile fich; /** * Constructor al que se le pasa el nombre * del fichero */ public TablaLibros(String nombreFichero) throws FileNotFoundException { fich = new RandomAccessFile(nombreFichero,"rw"); } /** * Obtener el elemento de la tabla que esta en * "ndice" */ public Libro obten(int ndice) throws IOException { // posiciona el contador de lectura/escritura long pos=indice*Libro.tamaoEnBytes; fich.seek(pos); // lee y retorna el libro return Libro.leeDeFichero(fich); } /** Escribir un libro en la posicin "ndice" * de la tabla */ public void almacena(int ndice, Libro l) throws IOException {
?

Lo que comparten tus amigos Regstrate


amigos. RINA: La arquitectura de red del futuro 60 personas recommended esto. Fabrica tu NAS (Servidor de archivos) con FreeNAS 6 personas recommended esto. Crea una cuenta o inicia sesin para ver qu estn haciendo tus

Plug-in social de Facebook

http://www.redeszone.net/2012/02/27/curso-de-java-entrada-y-salida-de-ficheros/

13/02/2013

Curso de Java. Entrada y salida de ficheros

Page 3 of 4

4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

try { t = new TablaLibros("random.dat"); Libro libro1 = new Libro("Java", 2006, 15.0); Libro libro2 = new Libro("1984", 1949, 25.0); t.almacena(0,libro1); t.almacena(1,libro2); Libro l1= t.obten(0); Libro l2= t.obten(1); } finally { if (t != null) { t.cerrar(); } }

Para escribir objetos en ficheros de acceso aleatorio es preciso convertirlos a un array de bytes A este proceso se le llama serializacin Para leer el objeto hay que deserializarlo La clase ByteArrayOutputStream nos ayuda en este proceso Tener cuidado pues la serializacin incluye objetos a los que se hace referencia Esto puede hacer que el tamao del objeto serializado vare mucho Para acceso aleatorio es conveniente tener tamaos fijos *Ejemplo de serializacin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 // serializa un libro y le escribe en un fichero RandomAccessFile fich = null; try { // abre el fichero de acceso aleatorio fich = new RandomAccessFile (nomFich, "rw"); // pone el puntero al principio fich.seek(0L); // serializa el libro convirtindolo a una // secuencia de bytes ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(bos); out.writeObject(libro); out.close(); // obtiene los bytes del libro serializado byte[] buf = bos.toByteArray(); // escribe los bytes en el fichero fich.write(buf); } finally { if (fich!=null) { fich.close(); } }
?

*Ejemplo de deserializacin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 // recupera del fichero un libro serializado RandomAccessFile fich = null; try { // abre el fichero de acceso aleatorio fich = new RandomAccessFile (nomFich, "r"); // pone el puntero al principio fich.seek(0L); // Lee un array de bytes del fichero byte[] bytes = new byte[(int) fich.length()]; fich.readFully(bytes); // Deserializa el array de bytes ObjectInputStream in = new ObjectInputStream( new ByteArrayInputStream(bytes)); libro=(Libro) in.readObject(); in.close(); } finally { if (fich!=null) { fich.close(); } }
?

Artculos relacionados Curso de Java. Entrada y salida con ficheros: Primeros ejemplos Curso de Java. Entrada y salida con ficheros: Introduccin Curso de Java. Entrada y salida con ficheros: ficheros de texto Curso Java : Ejemplo de programa con entrada/salida de ficheros y con interfaz grfica Curso de Java. Entrada y salida con ficheros: clase Scanner Comprtelo. Gracias!

0
Me gusta

http://www.redeszone.net/2012/02/27/curso-de-java-entrada-y-salida-de-ficheros/

13/02/2013

Curso de Java. Entrada y salida de ficheros

Page 4 of 4

0 comentarios
Deja un mensaje...

Discusin

Comunidad

Compartir

Acerca de Nosotros Contacto Aviso Legal Autores y editores

Comunicacin Facebook Twitter Google+ Google Currents RSS

Grupo ADSLZone ADSL Zone Gamer Zona Cual es mi IP TV Zone Soft Zone Hard Zone Movil Zona Internet Zona Tablet Zona AndroidAyuda

Lo Ms Buscado Whatsapp para PC Hackear una red WiFi SSH Tunneling Android wifi auditor

Redes Zone 2010 - 2013

http://www.redeszone.net/2012/02/27/curso-de-java-entrada-y-salida-de-ficheros/

13/02/2013

Potrebbero piacerti anche