1 00:00:00,820 --> 00:00:08,939 Una vez que hemos visto la clase, vamos a crear un fichero con datos y después vamos a proceder a leer. 2 00:00:09,380 --> 00:00:21,559 Para ello hemos creado este programa principal, muy pequeñito, el fichero datos.txt, donde vamos a mandar esta ruta a este método que se llama crearRaf. 3 00:00:21,980 --> 00:00:26,960 Una vez que creemos información, pues vamos a leerlo con este método que se llama readRaf. 4 00:00:26,960 --> 00:00:42,530 Vamos a ir a crear RAF. Bueno, crear RAF, su intención es la siguiente. Intenta abrir para lectura y escritura un fichero, el fichero que le hemos pasado, por eso ponemos el modo RW. 5 00:00:43,710 --> 00:00:56,390 Si el fichero ya contiene datos, simplemente nos posicionamos al final de él, por lo cual preguntamos primero si tiene datos y si su longitud es mayor que cero, y si es así, nos vamos directamente a esa posición, al final de todo. 6 00:00:56,390 --> 00:01:00,469 con lo cual lo que vamos a hacer es generar un número aleatorio 7 00:01:00,469 --> 00:01:02,810 simplemente para que los datos vayan modificándose 8 00:01:02,810 --> 00:01:05,129 y vamos a escribir tres informaciones 9 00:01:05,129 --> 00:01:12,189 un byte, un carácter y un número de formato long 10 00:01:12,189 --> 00:01:14,510 de formato largo y cerramos nuestro fichero 11 00:01:14,510 --> 00:01:17,129 si hubiera problemas saltaría una excepción 12 00:01:17,129 --> 00:01:20,549 y diríamos que hay problemas y devolveríamos falso 13 00:01:20,549 --> 00:01:23,969 puesto que hemos puesto que este método devuelva un valor boolean 14 00:01:23,969 --> 00:01:27,390 Si no ha habido problemas, pues llegaremos aquí y nos devolverá true. 15 00:01:28,230 --> 00:01:33,390 Con esto simplemente vamos a añadir un registro con estos tres datos, cada vez. 16 00:01:33,829 --> 00:01:35,750 Y si no existiera, pues lo crearía el fichero. 17 00:01:36,569 --> 00:01:37,790 Hasta aquí parece claro. 18 00:01:38,069 --> 00:01:39,469 Vamos ahora a leer el fichero. 19 00:01:40,310 --> 00:01:42,989 Entonces lo iríamos aquí, a readRath. 20 00:01:43,609 --> 00:01:48,450 Y aquí, en leer el fichero, pues lo que hacemos es abrirlo ya solamente en modo lectura. 21 00:01:49,530 --> 00:01:51,569 Y vamos a leer todos los registros que haya. 22 00:01:51,569 --> 00:02:08,490 Entonces para ello vamos a ver dónde está situado el puntero. Si el puntero está antes del tamaño, pues estamos dentro del fichero y por tanto vamos leyendo siempre los tres datos en esa misma orden que los introdujimos, es decir, readByte, readChart y readLong. 23 00:02:08,490 --> 00:02:27,569 Y vamos a mostrar en pantalla esa información. El primer dato, el segundo y el tercero. Y así continuamente. Esto es lo que vamos a hacer ahora. Una vez que ya tenemos claro que hacen estos dos métodos, pues vamos a ir directamente a ejecutar esta aplicación. 24 00:02:27,569 --> 00:02:34,870 En este momento tengo que decir que no hay el fichero datos.txt, no se encuentra. 25 00:02:35,050 --> 00:02:39,449 Con lo cual vamos a ejecutar y se generará un fichero datos.txt. 26 00:02:39,689 --> 00:02:40,349 Vamos a por ello. 27 00:02:41,330 --> 00:02:47,610 Bueno, hemos generado un registro, como es aleatorio, pues ha dado el número 23x23. 28 00:02:48,110 --> 00:02:50,370 Muy bien, eso es lo que dice que hay. 29 00:02:50,689 --> 00:02:54,810 Vamos a volver a nuestra línea de comandos y vamos a comprobar que aparece aquí. 30 00:02:54,810 --> 00:03:04,629 Y efectivamente se ha creado un fichero que tiene esta información, datos.txt y que ocupa 11 bytes. 31 00:03:05,449 --> 00:03:08,030 Sería interesante saber cómo es el contenido. 32 00:03:08,210 --> 00:03:12,810 Vamos a intentar hacer una cosa que seguramente nos va a fallar, pero vamos a intentarlo. 33 00:03:12,990 --> 00:03:20,189 Efectivamente, intentamos mostrar este fichero, es un fichero binario, con lo cual aquí aparecen caracteres que no podemos leer. 34 00:03:20,789 --> 00:03:25,210 Sin embargo, como hemos visto en el programa, el programa sí ha sido capaz de leerlos. 35 00:03:25,689 --> 00:03:27,189 Voy a generar algún registro más. 36 00:03:28,810 --> 00:03:35,030 Hemos generado tres registros y efectivamente el fichero ha ido creciendo. 37 00:03:36,090 --> 00:03:37,030 ¿Qué es lo que queremos ahora? 38 00:03:37,289 --> 00:03:42,210 Aprovechar esta característica de que es un fichero directo para ir directamente a un registro concreto. 39 00:03:42,849 --> 00:03:48,949 Para ello, vamos a ir al registro, por ejemplo, 8, que sabemos que en este momento no existe. 40 00:03:50,189 --> 00:03:56,870 Y vamos a llamar a un método que se llama readRaph, que se le pasa el fichero y el registro que queremos leer. 41 00:03:56,870 --> 00:04:01,330 Bueno, pues vamos a ver cómo sería ese programa. 42 00:04:01,590 --> 00:04:07,590 Una opción sería recorrerlo secuencialmente, ir leyendo registro a registro y quedarnos en el que nos piden. 43 00:04:08,090 --> 00:04:15,509 Pero ese método se aplica a un fichero secuencial, no a un fichero directo que nos permita acceder directamente al registro. 44 00:04:15,930 --> 00:04:18,110 Con lo cual vamos a ver cómo lo podríamos hacer. 45 00:04:18,110 --> 00:04:24,410 Este es el método readRough, que le pasamos la ruta y le pasamos el registro que queremos leer. 46 00:04:24,850 --> 00:04:32,329 Lo intentamos abrir de lectura y si no hay problemas, vamos a buscar qué tamaño tiene cada registro. 47 00:04:32,930 --> 00:04:40,689 Entonces vemos cuántos bytes ocupa un byte, cuántos bytes ocupa un carácter y cuántos bytes ocupa un long. 48 00:04:40,689 --> 00:04:44,810 ¿de acuerdo? una vez que sabemos el tamaño de un registro 49 00:04:44,810 --> 00:04:49,649 simplemente nos vamos a ir a el registro anterior 50 00:04:49,649 --> 00:04:52,629 porque vamos a empezar en el registro 1, 2, 3, 4 51 00:04:52,629 --> 00:04:57,009 entonces vamos a ir al registro menos 1 y lo multiplicamos por el tamaño 52 00:04:57,009 --> 00:05:01,930 con eso nos posicionaremos exactamente en el inicio del registro que queremos leer 53 00:05:01,930 --> 00:05:08,050 si esta longitud es menor que la longitud del fichero 54 00:05:08,050 --> 00:05:10,110 perdón, si es menor que la longitud del fichero 55 00:05:10,110 --> 00:05:12,769 estamos seguros de que vamos a encontrar la información 56 00:05:12,769 --> 00:05:14,250 estamos dentro del fichero 57 00:05:14,250 --> 00:05:16,670 por lo cual nos posicionamos ahí 58 00:05:16,670 --> 00:05:18,209 seek longitud 59 00:05:18,209 --> 00:05:20,509 y leemos los tres datos 60 00:05:20,509 --> 00:05:23,110 y esta es la información que vamos a devolver 61 00:05:23,110 --> 00:05:24,870 si no estuviéramos dentro 62 00:05:24,870 --> 00:05:26,769 como estamos en el ejemplo que estamos haciendo ahora mismo 63 00:05:26,769 --> 00:05:29,589 que estamos en el registro 8 y todavía no hay tantos registros 64 00:05:29,589 --> 00:05:33,790 pues simplemente el resultado devolvería el valor inicial nulo 65 00:05:33,790 --> 00:05:36,170 con lo cual tendríamos claro lo que va a aparecer 66 00:05:36,170 --> 00:05:39,990 sabiendo esto vamos a ejecutar 67 00:05:39,990 --> 00:05:43,430 me voy aquí y vamos a ejecutar este programa 68 00:05:43,430 --> 00:05:45,850 lo ejecuto una vez 69 00:05:45,850 --> 00:05:49,250 y por supuesto no hay registro 8 70 00:05:49,250 --> 00:05:50,610 lo voy a ejecutar otra vez 71 00:05:50,610 --> 00:05:53,069 otra vez, otra vez 72 00:05:53,069 --> 00:05:56,910 y aquí ya hay 8 registros 73 00:05:56,910 --> 00:05:59,930 y efectivamente me está devolviendo el registro 14 74 00:05:59,930 --> 00:06:02,449 voy a seguir ejecutando para tener más información 75 00:06:02,449 --> 00:06:07,269 y vemos que efectivamente él me sigue devolviendo el que queremos. 76 00:06:08,529 --> 00:06:15,610 Esta es la utilidad máxima de un finsel acceso directo, el poder ir a cualquier posición y encontrar la información.