00:00 hola a todos gente de youtube como estan 00:03 espero que se encuentren muy bien y sean 00:06 bienvenidos a este nuevo vídeo en donde 00:09 voy a volver a explicar también un poco 00:12 acerca de la clase de random access file 00:14 ya que en mi último vídeo creo que no 00:17 hice no 00:20 no explique tan bien que se diga todo 00:22 tengo muchísimos errores en dentro de 00:25 tanto del código como en la elaboración 00:27 del código como en la mejora en la 00:29 elaboración del vídeo y creo que era 00:33 necesario volver a hacer otro vídeo en 00:35 donde creo que puedo explicar un poco 00:38 mejor 00:39 en la clase hablando más crispado y los 00:41 archivos binarios entonces qué es lo que 00:43 voy a hacer voy a hacer un programa 00:45 hecho en java que puedas las siguientes 00:48 cosas ingresar datos de una persona en 00:53 este caso los datos serían el nombre de 00:56 la persona 00:57 que sería un string 01:00 la edad de la persona 01:05 porque sería un entero 01:08 y el sexo de la persona ya sea si es 01:12 masculino o femenino y esto sería 01:14 obviamente sería un dato de tipo char 01:17 la segunda opción que le voy a agregar 01:18 al 01:20 al programa es la de buscar una persona 01:26 por su nombre 01:28 y la tercera puedes es imprimir 01:32 todos los datos están dentro del archivo 01:35 binario entonces ya creó un proyecto 01:39 aquí que está más o menos elaborado ya 01:43 para no perder tanto tiempo entonces 01:45 vamos a darle un vistazo rápido a este 01:47 que está aquí lo primero que hice fue 01:50 que metí todo esto dentro de uruguay 01:52 para que se ejecute de manera cíclica 01:54 todo el tiempo 01:56 y cómo se llama 01:58 es un pequeño menú en donde de hecho lo 02:01 va a correr para que se visualice un 02:03 poco 02:06 [Música] 02:09 como ven tengo que se escriba la opción 02:13 que se desee la primera opción es la 02:15 escribirá en el archivo binario es decir 02:18 agregar una persona buscar personas en 02:20 el archivo y mostrar todos los registros 02:23 que sedes que se tienen en el archivo 02:26 entonces lo que vamos a hacer es que 02:28 vamos a hacer tres funciones que nos 02:30 permitan hacer esas tareas cómo lo vamos 02:33 a hacer pues es muy sencillo lo primero 02:38 que vamos a hacer es que primero tenemos 02:39 que para poder utilizar la clase random 02:41 access file tenemos que importar el 02:44 paquete ya apunto yo 02:48 y le damos un asterisco para importar 02:50 todo lo que contiene en este paquete y 02:52 luego 02:55 aquí abajo de la clase 02:58 hacemos como variable global o un objeto 03:01 global 03:05 objeto de tipo grande max es faro 03:11 que se llame archivo 03:14 por ejemplo 03:17 y luego qué es lo que hacemos 03:20 aquí abajo 03:23 aquí es donde lo vamos a distanciar como 03:25 queremos instancia 03:27 un objeto de tipo random accesado creo 03:30 que siempre tiene que ir dentro de un 03:31 ride cats 03:33 archivó igual a new random access file y 03:39 recordemos que el constructor de esta 03:41 clase tiene dos parámetros el primero es 03:44 el nombre del archivo que creo que lo 03:47 tengo que borrar primero porque ya había 03:48 hecho la prueba 03:56 tutorial 2 04:00 por ejemplo 04:02 el primer parámetro que se le tiene que 04:04 dar es el nombre del archivo yo en mi 04:08 caso lo que le voy a colocar zonas 04:11 y el segundo parámetro es si queremos 04:13 que el archivo sea de lectura o si sea 04:16 de lectura de escritura si queremos que 04:18 sea solo de lecturas en el par le tuvo 04:20 que dar ere como parámetro sino si 04:24 queremos que sea la historia de 04:25 escritura tiene que ser rw como yo 04:27 quiero tanto leer y escribir cosas desde 04:30 ese archivo entonces le tengo que dar 04:32 como parámetro 04:34 los dos caracteres rw 04:38 y luego tengo que hay que poner catch 04:43 y dentro de él colocar yo excepción para 04:48 los nombres en este caso y colocamos 04:53 las respectivas llaves y listo ya 04:55 tenemos instancia 2 dentro de la función 04:59 main lo que es este es el archivo 05:05 qué vamos a hacer ahora 05:09 a ver cómo escribimos cosas dentro del 05:11 archivo binario ok habíamos dicho que 05:15 queríamos que queríamos ingresar dentro 05:18 del archivo binario 05:20 el nombre de una persona 05:23 después la edad de esa persona y por 05:26 último 05:28 si era un masculino o femenino es decir 05:32 su sexo entonces cómo vamos a hacer eso 05:35 pues muy sencillo 05:38 recordemos en el tutorial pasado creo 05:40 que expliqué esto pero lo voy a volver 05:42 explicar ok para poder ingresar datos 05:46 dentro de un archivo binario o que 05:49 estemos manejando con la clase random 05:51 access file recordemos que tenemos que 05:53 tener algo que se llama formato 05:57 lo que quiere decir esto es que tenemos 05:59 que ingresar los archivos de perdón los 06:02 datos de manera ordenada 06:05 es decir que sigan cierto orden en este 06:08 caso nuestro primer dato va a ser un 06:11 string luego le va a seguir un entero 06:16 pero le va a seguir un sol porque 06:18 necesitamos saber esto porque no estamos 06:21 manejando textos sino que lo que estamos 06:23 manejando son distancias por así decirlo 06:26 en bytes recordemos que un string tiene 06:30 la cantidad de caracteres más dos bytes 06:34 adicionales que recordemos qué 06:38 o sea x la cantidad de caracteres 06:47 ciudad 06:49 de caracteres de un string 06:53 carlos más fácil ok entonces ok 06:56 supongamos que aquí tenemos el string 07:00 un texto cualquiera 07:02 por ejemplo pedro pedro 07:07 aquí tenemos 07:11 por ejemplo podríamos tener después un 07:13 número ya sea el 4 07:16 y luego el carácter m 07:20 que es masculino recordemos que un 07:23 archivo binario tiene un puntero 07:27 dentro de él este puntero recorre bytes 07:30 entonces nosotros tenemos que tener 07:32 cuidado en decirle que tantos bytes 07:35 tienen que recorrer el puntero porque si 07:38 cae el puntero en un lugar equivocado va 07:41 a leer más la información que hay en el 07:43 archivo y la información se va a volver 07:45 corrupta 07:47 entonces recordemos que como este dato 07:49 es un string contienen x más 2 bytes 07:54 recordemos que x más 2 bytes 07:58 es la cantidad de caracteres más otros 08:00 dos bailes tradicionales nosotros si 08:02 leemos este dato el puntero lo va a leer 08:04 y se va a posicionar al final de esto de 08:07 esta cantidad de bytes 08:09 y luego nosotros les decimos que lea el 08:11 int 08:13 el número entonces el puntero va a 08:17 avanzar cuatro años de vista 08:22 perdón porque va a llover 08:25 yo a cosas posicionar aquí 08:28 para avanzar 4 heights de distancia para 08:31 leer este número y se va a posicionar 08:34 aquí y luego hay que leer un char 08:36 entonces nosotros que saber qué dato en 08:39 el que sigue por eso es que tenemos que 08:41 tener este formato o en cualquier 08:43 formato el que necesitemos 08:45 y un saber si no me equivoco tiene 08:49 2 bytes 08:52 avanzados bites leer char hice posición 08:55 aquí si sólo tuviéramos un registro 08:57 entonces este sería el final del archivo 09:01 en dos fallos por así decirlo 09:05 y por lo tanto está esto que está aquí 09:08 si sólo tuviéramos este registro en este 09:10 sería el final de nuestro archivo y esta 09:13 sería la longitud de nuestro nuestro 09:16 archivo en bytes obviamente 09:19 entonces vamos a transferir esta código 09:25 por ejemplo 09:26 lo primero que tenemos que hacer es 09:30 puede buscar perdón por escribir 09:34 personas en el archivo binario vamos a 09:38 hacer primero 09:41 una función de fútbol que escriba dentro 09:46 del archivo escribir y le vamos a dar de 09:49 parámetros 09:52 lo que vamos a hacer el segundo vemos 09:55 aquí que tengo que tengo declarada una 09:59 variable de tipo string no haré el ético 10:01 entero 10:03 y una variable char que es el sexo y 10:06 aquí es en donde los pido por teclados 10:08 se escribe el nombre que se escriba la 10:11 edad 10:12 aquí se ingresa la y que se ingrese el 10:14 sexo de la persona y aquí es en donde se 10:17 ingresa y luego tendríamos que 10:20 ingresarlo en el archivo en el archivo 10:22 entonces para eso vamos a utilizar esta 10:24 función y le vamos a dar tres parámetros 10:26 el primero que sea el nombre del archivo 10:30 luego que sea la edad de la persona 10:36 y por último el sexo de la persona y 10:40 como estamos trabajando random access 10:41 file 10:43 a todas las a todas estas funciones que 10:45 vamos a colocar gestos 10:53 y listo 10:55 entonces que lo que vamos a hacer 10:57 primero vamos a hacer vamos a llamar a 11:01 este objeto archivo 11:03 punto vamos a llamar a su función si es 11:08 lo que hace si lo que hace es que 11:11 posiciona el puntero del archivo en la 11:14 posición que yo quiero si le dijera por 11:16 ejemplo 03 de posición 11:19 el puntero se posicionaría al principio 11:21 del archivo pero como yo necesito 11:23 escribir al final del archivo 11:26 entonces le voy a darle parámetro otro 11:28 función que me proporciona el bando más 11:29 estado 11:35 la longitud del archivo archivo junto al 11:38 ente entonces con esto 11:43 el puntero se posiciona al final del 11:47 archivo 11:49 qué haríamos después 11:51 y luego pues simplemente escribimos para 11:54 él 11:58 el nombre 12:01 1 wright usted efe y le damos de 12:05 parámetro lo que queremos escribir en 12:07 este caso el nombre 12:10 como escribimos algo entonces el puntero 12:13 avanza x + 2 bytes 12:16 bienvenido 12:18 luego tenemos que escribir un entero 12:20 para escribir un entero hacemos esto 12:26 light y con eso escribimos un entero y 12:30 la voz de parámetros lo que queremos 12:32 escribir en nuestro caso edad el entero 12:34 ese que el el frutero avance 4 gbytes de 12:37 distancia 12:40 esto que está aquí y se posiciona acá si 12:43 no también 12:45 y luego en que escribieron un chat 12:48 carácter archivos puntos 12:52 live 12:54 char 12:56 y aquí le damos de parámetro el sexo de 12:59 la persona 13:01 y listo creo que con eso sería 13:03 suficiente con eso se escribe ahora 13:06 vamos a la siguiente opción 13:11 tenemos que buscar una persona en del 13:13 archivo 13:15 entonces lo vamos a hacer de tipo muy 13:17 lindo 13:18 [Música] 13:22 cada persona 13:25 y le vamos a darte parámetro del nombre 13:27 de la persona que queremos buscar lo 13:29 mismo hay que colocar 13:33 esto que estoy aquí 13:37 para poder utilizar el líquido de 13:39 extracción 13:41 y entonces qué hacemos 13:44 lo primero es posicionarnos como tengo 13:46 que buscar o recorrer todo el archivo 13:49 entonces no hay que posicionar el 13:51 puntero al principio del archivo 13:54 entonces tenemos depositarlo aquí por 13:57 ejemplo 13:59 cómo hacemos eso 14:02 con la función 14:05 y le damos de parámetro 0 porque 14:08 queremos que se posicione el puntero en 14:10 la posición 0 cierto 14:12 luego para recorrer un archivo 14:17 lo podemos hacer con un ciclo 14:20 vimos el ciclo y qué es lo que vamos a 14:24 evaluar dentro de la condición del ciclo 14:27 vamos a decir archivo punto get wild 14:31 winter que es lo que hace que el fuego 14:33 contra medio esté esto que está aquí me 14:37 devuelve 14:39 en bytes la posición en donde está el 14:42 puntero es decir cuánto ha recorrido el 14:44 puntero si el puntero está en el 14:47 principio del archivo me va a devolver 0 14:50 obviamente o sea prácticamente devuelve 14:53 la distancia que ha recorrido el puntero 14:55 en en bytes y lo devuelve como un dato 14:59 de tipo long 15:01 le vamos a evaluar mientras ese número 15:04 que devuelva está este método sea menor 15:07 a la longitud del archivo 15:10 entonces para si utilizamos archivos 15:13 puntuales y esa es la condición que 15:15 vamos a evaluar dentro del guaro 15:18 abrimos y cerramos llaves y ahora vamos 15:22 a leer 15:23 un extraño entonces le decimos 15:28 nosotros queremos saber si esa persona 15:30 está dentro de él 15:31 de los registros entonces hacemos como 15:35 una condición sí 15:38 archivo 15:40 [Música] 15:42 efe 15:44 recordemos que esto lee un string 15:48 punto y post es decir que si es igual 15:53 al nombre que se está dando de parámetro 15:56 pues recordemos esto leer el string que 16:01 hay dentro del dentro del archivo y 16:05 recorre x2 bytes 16:08 entonces se procesaría aquí 16:12 entonces pues que retorne que retorne 16:15 verdadero 16:16 el club 16:19 si no encontró nada pues entonces 16:21 nosotros tenemos que ver que no 16:23 posiciones otra vez en donde yo sé que 16:26 va a estar el otro string 16:28 para eso es que necesitamos el formato y 16:30 yo sé que después tengo dos datos uno de 16:32 tipo entero y otro de tipo char 16:34 entonces sé que tengo que avanzar 4 bits 16:37 y luego tengo que avanzar otros 2 bits 16:40 esta distancia que está aquí tengo que 16:43 avanzar lo 16:44 cómo voy a hacer eso 16:46 sencillo tenemos dos maneras la primera 16:50 es leer los dos datos que estoy 16:53 queriendo leer que estoy queriendo 16:56 recorrer 16:58 sé que primero tengo que leer o 17:00 simplemente él no lo guardo simplemente 17:02 que lo lea y después que lea un chat que 17:06 los lea y no los guardo en ningún lado 17:08 haciendo de este el puntero a recorrer 17:10 la respectiva distancia que necesita 17:13 recorrer para volver a posicionarse en 17:15 el string pero hay otra manera más 17:17 sencilla que lo hacemos con un solo 17:19 método 17:21 para eso utilizamos el esquí bites para 17:24 que me sirvan para decirle al puntero 17:26 que recorra la cantidad de bytes que yo 17:28 quiero que recorra como yo sé que 17:31 después del string tiene que leer un 17:34 link y un chat que tiene que recorrer 4 17:37 bytes +2 bytes son 6 bytes cierto 17:41 entonces en parámetros le voy a decir 17:44 que se salte por así decir sé 17:47 seis pases de distancia 17:50 y listo así se va a ir ejecutando esto 17:53 una y otra vez si hubiera otro registro 18:00 se salta 6 bytes entonces 18:05 [Música] 18:07 ahora 18:09 por así decir se saltó estos seis bytes 18:13 y ahora se toma con otro registro 18:16 ven que toca con el nombre exactamente 18:19 con el nombre de la del otro de la otra 18:21 persona que es ingreso por eso es que 18:23 necesitamos tener ordenado nuestro 18:25 nuestra información que estamos 18:27 ingresando 18:28 porque si yo sé que después de este 18:30 nombre van a haber otros 6 bytes y aquí 18:33 va a haber otro nombre si es que el 18:35 archivo continúa hasta que el archivo 18:37 llegue a su final 18:42 supongamos que nunca nunca encontró el 18:44 nombre 18:50 entonces pues 18:54 falso porque nunca encontró el nombre 18:57 cierto 18:58 y para eso me sirve esa función y ahora 19:02 tengo que hacer la función para mostrar 19:04 todos los datos que se guardan 19:07 para ello voy a hacer una función 19:10 estática y fútbol que no retorne nada 19:13 para imprimir todos los nombres que se 19:16 ingresaron dentro de dentro de la 19:18 función perdón dentro del dentro del 19:22 archivo y como estamos trabajando con la 19:25 archivo siempre tenemos que incluir esto 19:27 entre esas funciones 19:29 abrimos y cerramos llaves y bueno 19:32 colocamos el 19:35 puntero al principio del archivo ya que 19:38 esto lo hacemos con 5 gramos de 19:40 parámetros pero y ahora utilizamos este 19:43 ciclo otra vez 19:48 [Música] 19:50 y imprimimos todos los datos 19:57 no 19:58 cómo hacer un gesto sencillo 20:03 hacemos el clásico existe apuntado el n 20:06 para imprimir cosas 20:09 le damos de parámetro archivo punto 20:14 efe porque tiene que leer un string 20:17 primero cierto porque ese es nuestro 20:18 formato primero tiene que dar el cero en 20:20 stream luego tiene que leer un entero 20:23 entonces luego imprimimos el entero 20:27 archivo punto 20:30 int 20:31 y por último tenemos que leer un chaval 20:33 cierto entonces imprimimos archivo 12 20:39 green card 20:42 luchar con esto avanzó toda esa 20:45 distancia 20:46 y listo se va imprimiendo 20:49 lo que necesito que imprima todos los 20:52 datos del archivo sant en el primero con 20:54 esto 20:57 luego ahora vamos a imprimir vamos a 20:59 implementar esta función las tres 21:01 funciones realmente en donde deberían de 21:04 ir entonces esta función que está aquí 21:08 la del mismo 21:09 la burla ponemos a la opción 1 cierto 21:12 escribir en el archivo binario cuando 21:14 vamos a donde está el switch y lo 21:16 colocamos aquí 21:19 escribir 21:21 digamos de parámetro el nombre la edad y 21:24 el sexo 21:25 bueno esa función dentro de un try catch 21:28 se me ha olvidado de ese pequeño del 21:31 player 21:38 escribir 21:41 y yo ponemos cats 21:44 y yo excepción 21:48 renuncias a ramas llaves y listo 21:53 y comprimimos que sea 21:57 ingresado 21:59 él no se ha ingresado se han ingresado 22:02 los datos 22:06 correctamente 22:10 listo ahora vamos a la segunda opción 22:14 es buscar una persona dentro del archivo 22:17 como nuestra función buscar este tipo 22:19 juliano 22:21 y la vamos a colocar dentro 22:24 pero un hijo 22:27 sabemos leemos el nombre que deseamos 22:29 buscar guardamos ese nombre que se 22:32 ingresa por teclado en la variable 22:34 nombre que es de tipo string y luego 22:37 mandamos a llamar a la función if 22:41 y cómo se llamaba 22:44 a buscar personas 22:48 y leamos del parámetro nombre 22:52 pues 22:54 un prima 22:55 perdón eso tiene que ir también dentro 22:57 un raid touch 23:01 el nuevo ese pequeño detalle 23:07 veamos esto y listo 23:11 y si encontró el nombre pues 23:19 un nombre 23:20 [Música] 23:24 sí no 23:29 no sea 23:31 encontrado el nombre en el archivo 23:35 porque no lo encuentro obviamente y por 23:38 último ponemos cats y yo 23:44 posicionamos llaves y listo 23:47 y hasta 23:48 y en la tercera opción 23:53 a demostrar todos los tacos de cuerda 2 23:54 todos los datos guardados simplemente 23:57 tenemos que imprimir todos los registros 23:59 que están dentro del archivo lo hacemos 24:01 con esta función 24:02 simplemente llamamos a la función 24:05 imprimir 24:08 estábamos dentro de un try cars 24:14 katz 24:17 tensión 24:20 y listo 24:22 y si no me equivoqué pues esto debería 24:25 de funcionar 24:29 escribamos una persona entra en el 24:31 archivo 1 24:35 es creamos la persona 24:39 escribe el nombre pedro por ejemplo edad 24:42 quince años 24:44 sexo masculino escribamos a otra persona 24:49 julio 24:52 19 y que su sexo sea masculino 24:57 a ver buscar personas 24:59 busquemos a julio 25:02 se ha encontrado el archivo en el nombre 25:07 entonces busquemos a pedro 25:12 se ha encontrado y ahora mostramos todos 25:15 los datos 25:17 como ven se muestran todos los datos que 25:20 están ingresados al archivo bueno creo 25:23 que eso sería todo espero que lo hayan 25:26 comprendido si tienen dudas o preguntas 25:29 acerca del código o algo de la casa 25:32 random a sus rayos pueden hacerlo en la 25:34 caja de comentarios y yo con mucho gusto 25:37 se lo voy a responder espero les haya 25:40 gustado y ojalá haya quedado mejor que 25:42 el anterior vídeo 25:44 si quieren suscriban se comenten denle 25:48 like sí entendieron el vídeo 25:51 les deseo un muy buen día hasta la 25:54 próxima 25:56 [Música]