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 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
/* Ejercicio: 2x3x01 Fecha: 04/10/2012 Enunciado: A partir de la clase punto... implementar los siguientes apartados. */ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; public class _2x3x01 { /* a) Se pide escribir una clase EjercicioSerial2 donde se defina un método estático de nombre almacenarColPuntosEnArchivo que reciba una colección de objetos de la clase Punto. El método también recibirá por parámetro el nombre de un archivo para volcar sobre él la INFORMACION de los objetos Punto contenidos en la colección. El método no capturará ninguna excepción. */ public static void almacenarColPuntosEnArchivo(Punto[] pts, String file) throws IOException { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File(file), false)); // Revisar: Al poner TRUE no funciona una vez creado el fichero. for( Punto p : pts ) { oos.writeObject(p.obtenerCoordX()); oos.writeObject(p.obtenerCoordY()); oos.writeObject(p.obtenerColor()); } oos.close(); } /* b) Añadir a la clase anterior un método estático, de nombre obtenerArrayListDeArchivo, que reciba por parámetro el nombre de un archivo con los datos correspondientes a varios objetos de la clase Punto. El método construirá y devolverá un objeto ArrayList<Punto> con los datos de los puntos leídos del archivo especificado. El método no capturará ninguna excepción. */ public static ArrayList<Punto> obtenerArrayListDeArchivo(String file) throws IOException, ClassNotFoundException { FileInputStream fis = new FileInputStream(new File(file)); ObjectInputStream ois = new ObjectInputStream(fis); ArrayList<Punto> arrayPunto = new ArrayList<>(); while( fis.available() > 0 ) arrayPunto.add(new Punto((Integer)ois.readObject(), (Integer)ois.readObject(), (String)ois.readObject())); ois.close(); fis.close(); return arrayPunto; } /* c) Añadir a la clase anterior un método main() para comprobar el funcionamiento de los métodos estáticos de los dos apartados anteriores. Se crearán varios objetos Punto que se almacenarán en un array. A partir del array se obtendrá una colección para guardar sus elementos en un archivo. Para finalizar se obtendrá un objeto ArrayList<Punto> con los objetos Punto creados a partir de los datos almacenados en el archivo. */ public static void main(String[] args) throws IOException, ClassNotFoundException { // PRIMERA PARTE: // Se crea una tabla con puntos: Punto[] puntos = { new Punto(5, 10, "red"), new Punto(25, 120, "green"), new Punto(45, -10, "white") }; // Se almacena la tabla: almacenarColPuntosEnArchivo(puntos, "puntos.dat"); // Se lee la informacion guardada y se mete en un ArrayList de Puntos ArrayList<Punto> arrayPunto = obtenerArrayListDeArchivo("puntos.dat"); // Se imprimen los datos de los puntos: for( Punto p : arrayPunto ) System.out.println(p.toString()); // SEGUNDA PARTE: // Se guarda la coleccion de puntos en un fichero2, despues se lee y se recupera en un array2: almacenarColPuntosComoObjetos(puntos, "puntos2.dat"); ArrayList<Punto> arrayPunto2 = obtenerArrayListDeArchivoComoObjeto("puntos2.dat"); // Se graba el array2 en fichero3, y despues se recupera: escribirArrayListEnArchivo(arrayPunto2, "puntos3.dat"); ArrayList<Punto> arrayPunt3 = leerArrayListDeArchivo("puntos3.dat"); // Se imprime el array3: System.out.println("\n" + arrayPunt3); } /* d) Escribir un método de nombre almacenarColPuntosComoObjetos que reciba por parámetro una colección de objetos Punto y el nombre del archivo donde se almacenarán. El método escribirá directamente cada objeto Punto al archivo. */ public static void almacenarColPuntosComoObjetos(Punto[] pts, String file) throws IOException { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File(file), false)); // Revisar: Al poner TRUE no funciona una vez creado el fichero. for( Punto p : pts ) oos.writeObject(p); oos.close(); } /* e) Escribir un método de nombre obtenerArrayListDeArchivoComoObjeto que reciba por parámetro el nombre de un archivo donde se encuentran almacenados varios objetos de la clase Punto. El método leerá los objetos del archivo y los almacenará en un ArrayList que, finalmente será devuelto. */ public static ArrayList<Punto> obtenerArrayListDeArchivoComoObjeto(String file) throws IOException, ClassNotFoundException { FileInputStream fis = new FileInputStream(new File(file)); ObjectInputStream ois = new ObjectInputStream(fis); ArrayList<Punto> arrayPunto = new ArrayList<>(); while( fis.available() > 0 ) arrayPunto.add((Punto)ois.readObject()); ois.close(); fis.close(); return arrayPunto; } /* f) Escribir un método de nombre escribirArrayListEnArchivo, que reciba por parámetro un objeto ArrayList de objetos Punto y el nombre del archivo donde se almacenará. El método almacenará directamente el objeto ArrayList sobre el archivo recibido. No se capturará ninguna excepción. */ public static void escribirArrayListEnArchivo(ArrayList<Punto> arrayPunto, String file) throws IOException { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File(file), false)); // Revisar: Al poner TRUE no funciona una vez creado el fichero. oos.writeObject(arrayPunto); oos.close(); } /* g) Escribir un método de nombre leerArrayListDeArchivo que reciba por parámetro el nombre de un archivo en el que se ha escrito previamente un objeto ArrayList que almacena objetos de la clase Punto. El método leerá el objeto ArrayList del archivo y lo devolverá. No se capturará ninguna excepción. */ public static ArrayList<Punto> leerArrayListDeArchivo(String file) throws IOException, ClassNotFoundException { ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File(file))); ArrayList<Punto> arrayPunto = (ArrayList<Punto>)ois.readObject(); // Revisar, marca conversion descontrolada ois.close(); return arrayPunto; } } |
Categoría: Informatica
Ejercicios Java UT2 Hoja2 – Uso de la clase File y RandomAccessFile
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 |
/* Ejercicio: 2x2x01 Fecha: 27/09/2012 Enunciado: Escribir un programa que muestre los nombres de los archivos y directorios que se encuentren en el directorio que se pase como argumento (args[0]). */ import java.io.File; public class _2x2x01 { public static void metodo(String[] args) { File file = new File(args[0]); if( file.isDirectory() ) { File[] ficheros = file.listFiles(); for( File f : ficheros ) System.out.println(f.getName()); } } public static void main(String[] args) { String[] argumentos = { "C:\\" }; metodo(argumentos); } } |
Ejercicios Java UT2 Hoja1 – Control de flujos
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 |
/* Ejercicio: 2x1x01 Fecha: 20/09/2012 Enunciado: Escribe un programa que escriba los 100 primeros números naturales en un archivo numNaturales.txt */ import java.io.*; public class _2x1x01 { public static void main(String[] args) { try { FileWriter fw = new FileWriter("numNaturales.txt"); for( int i = 0 ; i < 100 ; i++ ) fw.write(i + "\r\n"); fw.close(); } catch( IOException ex ) { ex.printStackTrace(); } } } |
Librería RTC para reloj Dallas DS1307 y DS3231
Después de probar bastantes de las librerías disponibles para este reloj y de que no me convenciera ninguna por su forma de funcionar, decidí programar mi propia librería basándome en el código que use en mi primer RTC.
Ahora al estar todo en una librería es mucho mas cómodo de usar que antes y tiene los métodos necesarios para poner el reloj en hora u obtener sus datos.
Leer másCrear ficheros .ftf de actualización para Xperia
Me hizo falta con la actualización 4.0.2.A.0.62 de Gingerbread pero no apunte el proceso, y ahora que lo necesito para la nueva compilación de ICS, la 4.1.B.0.587, no recordaba como se hacia, así que para la próxima aquí esta la chuleta 😉
Esto es útil para cuando al intentar actualizar el móvil desde el Sony Companion, nos da error por haberlo modificado y nos dice que nos busquemos la vida y bla bla bla. Pero no es ningún problema, cuando nos da el error la actualización ya esta en una carpeta temporal del ordenador, solo tenemos que coger los tres ficheros y crear el .ftf para poderlo flahsear desde el Flashtool.
Leer másTraducir página web con php-gettext
Como vimos hace un tiempo traducir themes de WordPress era una tarea bastante sencilla, principalmente porque todas las funciones necesarias ya las incorporaba el núcleo de WP, solo necesitábamos llamar la función load_theme_textdomain(); para cargar el fichero de idiomas y encapsular el texto con las funciones __() y _e().
Pero qué sucede si lo que queremos traducir son ficheros .php que nada tienen que ver con WP, de una web que nos hemos hecho por ejemplo?
Cómo hacemos para poder usar las funciones __() y _e() y los ficheros .mo que contienen las traducciones para cada idioma, es mas, cómo sabemos cual de los ficheros debemos de cargar para mostrarle la traducción correcta al visitante?
Leer másRedirecciones JavaScript y PHP según el dispositivo para forocoches
Hay una cosa muy molesta que llevo sufriendo un tiempo con Opera, y es que el Speed Dial al sincronizarse con Opera Link me sintoniza el ordenador y el móvil para que tenga todas las configuraciones iguales. Esto no es ningún problema, si no toda una ventaja.
El problema esta cuando te encuentras páginas que aun disponiendo de una versión normal, para ordenadores, y otra móvil, para Smartphones, pasan completamente de hacer una redireccion, de modo que dependiendo del dispositivo con el que te conectes te cargue una plantilla u otra. Ejemplo de ello es forocoches, que dispone de versión normal bajo el subdominio www, y de versión móvil bajo el de m.
Leer másPros y contras de Roms Xperia Pro
He probado unas cuantas Roms para este móvil, cada una tiene sus cosas buenas y malas, a continuación hago una mini lista de pros y contras.
Si conocéis alguna Rom que no aparezca me lo podéis comentar para que pueda probarla.
Gingerbread 2.3.4 – Firmware 0.42 / 0.62
+ Los menús van muy fluidos, después de salir de alguna aplicación pesada se carga el escritorio rápidamente.
– La interfaz es la antigua de Android con el launcher de Sony.
Leer más