1 00:00:00,000 --> 00:00:42,340 A ver, vamos a completar lo que nos queda, pero muy por encima, que es acceso a ficheros desde Java, hasta ahora nuestra información siempre la teníamos que meter en el momento, sobre la marcha la aplicación arrancaba y la aplicación arranca siempre limpia, 2 00:00:42,340 --> 00:00:46,079 Claro, las variables, cuando una aplicación arranca, las variables están siempre limpias 3 00:00:46,079 --> 00:00:51,399 Y una aplicación solo puede trabajar con los datos que tengan las variables, solamente 4 00:00:51,399 --> 00:00:57,460 Entonces, de algún sitio tienen que llenarse esas variables, de algún lado 5 00:00:57,460 --> 00:01:01,200 Porque si no, la aplicación no puede trabajar, sus datos tienen que estar siempre ahí 6 00:01:01,200 --> 00:01:07,780 Me da igual que esas variables sean primitivas, sean objetos, sean colecciones de objetos, que es lo habitual 7 00:01:07,780 --> 00:01:10,959 pero los datos tienen que estar ahí en esas variables 8 00:01:10,959 --> 00:01:13,200 para que el proceso 9 00:01:13,200 --> 00:01:14,439 la aplicación trabaje con él 10 00:01:14,439 --> 00:01:16,959 bueno, hasta ahora para llenar 11 00:01:16,959 --> 00:01:17,680 esas variables 12 00:01:17,680 --> 00:01:20,579 nosotros solo hemos tenido dos caminos 13 00:01:20,579 --> 00:01:22,799 o en el momento en el que arrancaba 14 00:01:22,799 --> 00:01:24,920 la aplicación, con la aplicación arrancando 15 00:01:24,920 --> 00:01:26,200 estábamos sentados delante 16 00:01:26,200 --> 00:01:28,659 metiéndolo por teclado y la aplicación 17 00:01:28,659 --> 00:01:30,019 lo iba cogiendo con escáner 18 00:01:30,019 --> 00:01:33,099 o teníamos una interfaz gráfica 19 00:01:33,099 --> 00:01:34,680 y había alguien sentado delante 20 00:01:34,680 --> 00:01:36,359 que iba metiendo las áreas de texto 21 00:01:36,359 --> 00:01:39,000 es decir, siempre tenía que haber alguien 22 00:01:39,000 --> 00:01:41,000 en el momento en que la aplicación había arrancado 23 00:01:41,000 --> 00:01:43,799 ahí presente para meter los datos 24 00:01:43,799 --> 00:01:45,340 porque si no la aplicación no puede trabajar 25 00:01:45,340 --> 00:01:46,239 lógicamente 26 00:01:46,239 --> 00:01:49,480 bueno, esa obviamente 27 00:01:49,480 --> 00:01:50,239 no es la forma 28 00:01:50,239 --> 00:01:52,780 no es la única forma de trabajar 29 00:01:52,780 --> 00:01:55,680 los datos con los que una aplicación trabaja 30 00:01:55,680 --> 00:01:57,599 pueden estar perfectamente 31 00:01:57,599 --> 00:01:59,700 en un fichero o en una base de datos 32 00:01:59,700 --> 00:02:01,760 y la aplicación arranca y los recoge de ahí 33 00:02:01,760 --> 00:02:04,040 si hay mil usuarios 34 00:02:04,040 --> 00:02:05,680 con los que trabaja la aplicación 35 00:02:05,680 --> 00:02:06,859 y el usuario me refiero 36 00:02:06,859 --> 00:02:09,060 pues un conjunto de datos grande 37 00:02:09,060 --> 00:02:11,360 pues claro, cada vez que arranca la aplicación 38 00:02:11,360 --> 00:02:12,939 no va a estar alguien sentado delante 39 00:02:12,939 --> 00:02:14,500 para meter todos los datos 40 00:02:14,500 --> 00:02:16,879 oye, que vas a trabajar con estos mil nombres 41 00:02:16,879 --> 00:02:18,620 venga, voy a meterte los mil nombres 42 00:02:18,620 --> 00:02:19,900 y luego tú ya trabajas 43 00:02:19,900 --> 00:02:22,360 pues no, esos nombres estarán en un fichero 44 00:02:22,360 --> 00:02:23,240 en una base de datos 45 00:02:23,240 --> 00:02:26,759 y la aplicación los recogerá cuando arranque 46 00:02:26,759 --> 00:02:29,759 y una vez que los ha volcado a variables 47 00:02:29,759 --> 00:02:31,280 ya podrá trabajar con ellos 48 00:02:31,280 --> 00:02:32,259 ¿vale? 49 00:02:32,960 --> 00:02:35,020 pero nunca se trabaja con los datos 50 00:02:35,020 --> 00:02:37,400 directamente en el fichero 51 00:02:37,400 --> 00:02:39,199 o directamente en la base de datos 52 00:02:39,199 --> 00:02:41,020 nunca porque la aplicación no puede 53 00:02:41,020 --> 00:02:43,180 la aplicación solo puede trabajar 54 00:02:43,180 --> 00:02:45,580 lo que esté en la memoria principal 55 00:02:45,580 --> 00:02:46,340 en la RAM 56 00:02:46,340 --> 00:02:48,500 y lo que está en la RAM son las variables 57 00:02:48,500 --> 00:02:51,280 aparecen cuando el proceso 58 00:02:51,280 --> 00:02:53,159 arranca, esas variables en la RAM 59 00:02:53,159 --> 00:02:54,860 se llenan de cosas 60 00:02:54,860 --> 00:02:57,360 y cuando el proceso 61 00:02:57,360 --> 00:02:58,719 termina desaparecen 62 00:02:58,719 --> 00:03:01,400 si lo que había en las variables 63 00:03:01,400 --> 00:03:02,759 no queremos que se pierda 64 00:03:02,759 --> 00:03:07,300 pues habrá que volcarlo otra vez luego a un fichero o a una base de datos 65 00:03:07,300 --> 00:03:10,580 claro, nosotros hasta ahora 66 00:03:10,580 --> 00:03:14,740 cuando la aplicación terminaba, sus resultados, si no había alguien ahí delante 67 00:03:14,740 --> 00:03:19,139 para verlos con sus ojos, pues no servían para nada, los resultados se veían 68 00:03:19,139 --> 00:03:23,159 y ya está, pero normalmente no estará alguien siempre 69 00:03:23,159 --> 00:03:27,240 ahí para ver el resultado y tomar nota, ese resultado 70 00:03:27,240 --> 00:03:31,599 tiene todo el sentido del mundo, que se vuelque desde las variables 71 00:03:31,599 --> 00:03:33,860 a un fichero, una base de datos y ahí se queda 72 00:03:33,860 --> 00:03:35,960 para luego ya nosotros ver ese resultado 73 00:03:35,960 --> 00:03:36,340 ¿vale? 74 00:03:37,879 --> 00:03:39,139 bueno pues entonces 75 00:03:39,139 --> 00:03:40,960 ficheros o bases de datos 76 00:03:40,960 --> 00:03:42,400 son 77 00:03:42,400 --> 00:03:45,900 las dos estructuras en las cuales 78 00:03:45,900 --> 00:03:47,800 se guarda esa información 79 00:03:47,800 --> 00:03:48,819 de forma permanente 80 00:03:48,819 --> 00:03:50,900 ficheros y bases de datos 81 00:03:50,900 --> 00:03:53,319 acceso a bases de datos pues ya 82 00:03:53,319 --> 00:03:55,639 se verá extensamente el año que viene 83 00:03:55,639 --> 00:03:57,659 y a ficheros también 84 00:03:57,659 --> 00:04:00,979 pero vamos a ver 85 00:04:00,979 --> 00:04:02,879 hacer una primera introducción 86 00:04:02,879 --> 00:04:04,580 la que corresponde a primero ahora 87 00:04:04,580 --> 00:04:06,740 entonces, vamos a ver 88 00:04:06,740 --> 00:04:09,139 muy pocas clases de acceso a ficheros 89 00:04:09,139 --> 00:04:10,900 porque el acceso a ficheros como todo 90 00:04:10,900 --> 00:04:12,759 ahora ya en Java se trata de 91 00:04:12,759 --> 00:04:14,960 seleccionar las clases que ya 92 00:04:14,960 --> 00:04:16,800 están hechas, que hacen lo que yo quiero 93 00:04:16,800 --> 00:04:17,980 y usarlas 94 00:04:17,980 --> 00:04:20,399 cuando hemos hecho la interfaz gráfica, ¿qué hemos hecho? 95 00:04:20,420 --> 00:04:22,540 hemos construido algo nosotros, no hemos construido nada 96 00:04:22,540 --> 00:04:24,639 hemos usado clases que ya estaban hechas 97 00:04:24,639 --> 00:04:26,339 el frame, el button, el no sé qué 98 00:04:26,339 --> 00:04:28,139 y las hemos reutilizado 99 00:04:28,139 --> 00:04:30,620 con herencia el JFrame 100 00:04:30,620 --> 00:04:32,339 con composición el JButton 101 00:04:32,339 --> 00:04:33,959 porque lo hemos metido en el JFrame 102 00:04:33,959 --> 00:04:36,259 se trata ahora ya para nosotros 103 00:04:36,259 --> 00:04:37,860 de construir nuestras aplicaciones 104 00:04:37,860 --> 00:04:39,259 reutilizando lo que ya está 105 00:04:39,259 --> 00:04:41,019 pues el acceso a ficheros igual 106 00:04:41,019 --> 00:04:42,519 habrá clases 107 00:04:42,519 --> 00:04:44,939 que tienen ya código hecho 108 00:04:44,939 --> 00:04:46,180 para acceder a ficheros 109 00:04:46,180 --> 00:04:46,879 código hecho 110 00:04:46,879 --> 00:04:48,120 y nosotros tenemos ya que 111 00:04:48,120 --> 00:04:49,899 utilizarlas correctamente 112 00:04:49,899 --> 00:04:53,060 para meterlas en nuestros programas 113 00:04:53,060 --> 00:04:54,379 utilizarlas correctamente 114 00:04:54,379 --> 00:04:55,860 no se trata solo de que sepamos 115 00:04:55,860 --> 00:04:57,920 qué métodos tienen y usarlos, no, eso no 116 00:04:57,920 --> 00:04:59,199 eso es una tontería 117 00:04:59,199 --> 00:05:01,860 eso está en la documentación, se trata de que 118 00:05:01,860 --> 00:05:03,839 nosotros sepamos hacer nuestro programa, programar 119 00:05:03,839 --> 00:05:05,779 programar y programar es 120 00:05:05,779 --> 00:05:08,100 primer trimestre, sentencias 121 00:05:08,100 --> 00:05:09,740 de decisión, bucles, etcétera 122 00:05:09,740 --> 00:05:11,180 construir nuestros algoritmos 123 00:05:11,180 --> 00:05:13,759 y alguna de esas sentencias ya usarán 124 00:05:13,759 --> 00:05:16,079 puntualmente métodos de clases que ya están hechas 125 00:05:16,079 --> 00:05:17,040 ¿vale? 126 00:05:17,579 --> 00:05:19,279 bueno, pues entonces vamos a ver 127 00:05:19,279 --> 00:05:21,839 algunas clases, pocas 128 00:05:21,839 --> 00:05:24,040 de acceso a ficheros y sobre todo 129 00:05:24,040 --> 00:05:25,120 lo vamos a orientar 130 00:05:25,120 --> 00:05:27,899 a usarlas en ejercicios 131 00:05:27,899 --> 00:05:29,800 que nos puedan servir un poco de repaso 132 00:05:29,800 --> 00:05:31,300 de todo lo anterior 133 00:05:31,300 --> 00:05:33,500 un poquito de repaso, pues de cara 134 00:05:33,500 --> 00:05:35,759 a los exámenes de recuperación 135 00:05:35,759 --> 00:05:37,639 próximos que quedan, etcétera 136 00:05:37,639 --> 00:05:38,939 ¿vale? poquitas clases 137 00:05:38,939 --> 00:05:41,319 y los ejercicios orientados 138 00:05:41,319 --> 00:05:43,399 a repasar lo importante 139 00:05:43,399 --> 00:05:45,680 de alguna manera, ¿vale? a reforzar 140 00:05:45,680 --> 00:05:46,339 lo importante 141 00:05:46,339 --> 00:05:48,920 para que, bueno, pues 142 00:05:48,920 --> 00:05:51,240 mejoren los resultados 143 00:05:51,240 --> 00:05:53,100 para los próximos exámenes 144 00:05:53,100 --> 00:05:55,120 Venga, pues a ver 145 00:05:55,120 --> 00:05:56,939 Clases que vamos a ver 146 00:05:56,939 --> 00:05:58,600 Relacionadas con ficheros 147 00:05:58,600 --> 00:06:00,860 Hay una clase 148 00:06:00,860 --> 00:06:02,839 Que es básica 149 00:06:02,839 --> 00:06:05,879 Que es esta clase 150 00:06:05,879 --> 00:06:07,540 La clase File 151 00:06:07,540 --> 00:06:10,660 Entonces la clase File 152 00:06:10,660 --> 00:06:12,259 Es una clase 153 00:06:12,259 --> 00:06:14,959 Que sirve para guardar 154 00:06:14,959 --> 00:06:16,819 Una referencia 155 00:06:16,819 --> 00:06:18,540 A una ubicación 156 00:06:18,540 --> 00:06:20,019 De nuestro sistema de archivos 157 00:06:20,019 --> 00:06:21,899 Simplemente para eso 158 00:06:21,899 --> 00:06:45,860 cuando digo sistema de archivos 159 00:06:45,860 --> 00:06:47,560 digo el sistema de archivos 160 00:06:47,560 --> 00:06:48,300 local 161 00:06:48,300 --> 00:06:51,600 del equipo donde se esté ejecutando 162 00:06:51,600 --> 00:06:52,180 el proceso 163 00:06:52,180 --> 00:06:57,120 porque para acceder 164 00:06:57,120 --> 00:06:58,500 a otros ordenadores 165 00:06:58,500 --> 00:07:00,620 hay que hacerlo mediante sockets 166 00:07:00,620 --> 00:07:02,720 eso es otra cosa, eso es otro rollo 167 00:07:02,720 --> 00:07:04,519 que también veréis el año que viene 168 00:07:04,519 --> 00:07:07,240 para hacer otro equipo tengo que establecer una conexión de red 169 00:07:07,240 --> 00:07:09,060 no hay tutía, una conexión de red 170 00:07:09,060 --> 00:07:10,939 pues siempre va a ser mediante sockets 171 00:07:10,939 --> 00:07:12,199 si es TCP al menos 172 00:07:12,199 --> 00:07:15,180 vale, nosotros no estamos en eso 173 00:07:15,180 --> 00:07:16,800 ahora, nosotros estamos accediendo 174 00:07:16,800 --> 00:07:18,620 al sistema de archivos local 175 00:07:18,620 --> 00:07:20,839 del equipo donde 176 00:07:20,839 --> 00:07:23,459 se ha arrancado la aplicación 177 00:07:23,459 --> 00:07:25,160 bueno, el sistema de archivos 178 00:07:25,160 --> 00:07:27,100 local tiene una forma de referirnos a sus 179 00:07:27,100 --> 00:07:29,120 ubicaciones que todos conocemos de toda la vida 180 00:07:29,120 --> 00:07:31,000 en Linux pues con la barra para un lado 181 00:07:31,000 --> 00:07:32,459 y en Windows pues con la barra para otro 182 00:07:32,459 --> 00:07:35,079 en Windows además con unidades 183 00:07:35,079 --> 00:07:37,220 con letras y en Linux no 184 00:07:37,220 --> 00:07:39,100 entonces todos 185 00:07:39,100 --> 00:07:40,959 sabemos que los sistemas de archivos sean 186 00:07:40,959 --> 00:07:42,959 tipo Linux, tipo Windows tienen una 187 00:07:42,959 --> 00:07:45,220 forma de referirse a las rutas 188 00:07:45,220 --> 00:07:46,899 ¿verdad? a través de 189 00:07:46,899 --> 00:07:49,199 el camino, luego el fichero, etc 190 00:07:49,199 --> 00:07:51,019 bueno, pues cada una 191 00:07:51,019 --> 00:07:52,879 de esas posibles rutas 192 00:07:52,879 --> 00:07:55,160 de nuestro sistema de archivo, podemos asociarla 193 00:07:55,160 --> 00:07:56,180 a un objeto file 194 00:07:56,180 --> 00:07:57,360 y ya está 195 00:07:57,360 --> 00:08:00,819 y ahora ya, ese objeto file 196 00:08:00,819 --> 00:08:02,740 lo puede usar la aplicación para algunas 197 00:08:02,740 --> 00:08:04,899 cosas, para sacar información 198 00:08:04,899 --> 00:08:07,040 sobre esa ruta, para algunas cositas 199 00:08:07,040 --> 00:08:08,800 muy pocas, porque 200 00:08:08,800 --> 00:08:10,819 para hacer otras cosas ya están otras clases 201 00:08:10,819 --> 00:08:12,740 ¿vale? 202 00:08:12,740 --> 00:08:19,500 Entonces, esa ruta a la que hace referencia el objeto file es una ruta que puede existir, puede no existir. 203 00:08:19,720 --> 00:08:22,180 O sea, el objeto existe haciendo referencia a una ruta. 204 00:08:22,660 --> 00:08:26,199 Luego ya la ruta puede que exista, puede que no exista, puede que sea un directorio, 205 00:08:26,339 --> 00:08:28,199 puede que no sea un directorio, sino que sea un fichero. 206 00:08:28,839 --> 00:08:30,779 Puede que tenga permisos de lectura, que no los tenga. 207 00:08:31,720 --> 00:08:35,419 Entonces, toda esa información la podemos sacar a partir de esa referencia. 208 00:08:35,419 --> 00:08:37,779 Bueno, pues entonces 209 00:08:37,779 --> 00:08:47,559 Si nos vamos aquí, por ejemplo 210 00:08:47,559 --> 00:08:50,320 Un proyecto 211 00:08:50,320 --> 00:08:55,220 Ejemplos 212 00:08:55,220 --> 00:08:56,159 Entrada 213 00:08:56,159 --> 00:08:57,620 Salida 214 00:08:57,620 --> 00:08:59,379 De clase 215 00:08:59,379 --> 00:09:05,799 Vale, pues vamos a hacer 216 00:09:05,799 --> 00:09:07,940 Un primer paquete 217 00:09:07,940 --> 00:09:09,159 Que se llame file 218 00:09:09,159 --> 00:09:12,139 Porque son ejemplos con la clase file 219 00:09:12,139 --> 00:09:18,909 Venga, pues nos hacemos una clase 220 00:09:18,909 --> 00:09:47,889 Vale, pues entonces 221 00:09:47,889 --> 00:09:48,850 File es una clase 222 00:09:48,850 --> 00:10:00,129 Si queremos declarar un objeto de esa clase, obviamente, como siempre, pues el nombre de la clase y el nombre de, pues yo qué sé, de la referencia. 223 00:10:00,710 --> 00:10:00,909 Vale. 224 00:10:01,929 --> 00:10:08,240 Entonces, la clase File la tenemos que importar ¿de dónde? 225 00:10:09,139 --> 00:10:10,019 De Java.io. 226 00:10:10,259 --> 00:10:17,539 En Java.io, Java.io es un paquete básico, un paquete básico dentro de la máquina virtual, dentro de la librería JRE. 227 00:10:17,539 --> 00:10:21,580 Es un paquete básico que tiene un montón de clases relacionadas con acceso a ficheros. 228 00:10:21,700 --> 00:10:24,580 es el de toda la vida, no es el único 229 00:10:24,580 --> 00:10:26,220 luego está Java Neo 230 00:10:26,220 --> 00:10:28,500 Java Neo que tiene otras 231 00:10:28,500 --> 00:10:30,379 clases que se han ido 232 00:10:30,379 --> 00:10:31,200 incorporando 233 00:10:31,200 --> 00:10:33,700 también para acceso a ficheros 234 00:10:33,700 --> 00:10:36,759 pero ese es el básico, es como las fechas 235 00:10:36,759 --> 00:10:38,320 pues Java útil tiene 236 00:10:38,320 --> 00:10:40,519 las clases de toda la vida para fechas 237 00:10:40,519 --> 00:10:42,659 y luego está Java Time que se incorpora 238 00:10:42,659 --> 00:10:44,539 más tarde para cosas más específicas 239 00:10:44,539 --> 00:10:46,559 bueno, hay de todo, miles de clases 240 00:10:46,559 --> 00:10:48,559 que si uno alguna vez quiere hacer algo 241 00:10:48,559 --> 00:10:50,440 concreto, pues busca y dice 242 00:10:50,440 --> 00:10:52,279 a ver si tengo clases relacionadas con esto 243 00:10:52,279 --> 00:10:54,200 las busca, las utiliza y ya está 244 00:10:54,200 --> 00:10:56,299 lo que importa es que luego sepa programar 245 00:10:56,299 --> 00:10:58,840 para decidir dónde va cada cosa 246 00:10:58,840 --> 00:11:00,740 pero las clases ya lo tienen 247 00:11:00,740 --> 00:11:01,620 todo hecho dentro 248 00:11:01,620 --> 00:11:04,259 bueno, pues entonces 249 00:11:04,259 --> 00:11:06,620 ahora mismo la variable está declarada 250 00:11:06,620 --> 00:11:07,539 ¿cómo la instanciamos? 251 00:11:08,480 --> 00:11:10,159 pues file se instancia 252 00:11:10,159 --> 00:11:12,299 con el constructor 253 00:11:12,299 --> 00:11:14,700 normalmente esto ya 254 00:11:14,700 --> 00:11:15,799 como curiosidad 255 00:11:15,799 --> 00:11:18,679 el instanciar los objetos con constructores 256 00:11:18,679 --> 00:11:20,860 Con el new, perdón 257 00:11:20,860 --> 00:11:22,159 Porque siempre instancian con constructores 258 00:11:22,159 --> 00:11:24,340 Instanciarlos con el new 259 00:11:24,340 --> 00:11:27,240 Es una cosa que se ha ido perdiendo 260 00:11:27,240 --> 00:11:29,139 Vale 261 00:11:29,139 --> 00:11:31,059 Y se ha ido cambiando 262 00:11:31,059 --> 00:11:33,100 Por otro patrón de diseño distinto 263 00:11:33,100 --> 00:11:40,419 Que es 264 00:11:40,419 --> 00:11:42,559 Yo te prohíbo el constructor 265 00:11:42,559 --> 00:11:44,000 Es decir, lo hago privado 266 00:11:44,000 --> 00:11:46,340 Entonces si yo lo hago privado 267 00:11:46,340 --> 00:11:49,299 Si file tuviera dentro el constructor privado 268 00:11:49,299 --> 00:11:50,179 Que no es el caso 269 00:11:50,179 --> 00:11:52,299 Esta es la clase file 270 00:11:52,299 --> 00:11:54,580 Vale 271 00:11:54,580 --> 00:11:56,480 pues el constructor de la clase file 272 00:11:56,480 --> 00:11:58,580 que está en algún sitio 273 00:11:58,580 --> 00:12:11,000 estará, veis 274 00:12:11,000 --> 00:12:13,340 pues es público 275 00:12:13,340 --> 00:12:15,419 es un constructor 276 00:12:15,419 --> 00:12:17,320 público y al ser público el constructor 277 00:12:17,320 --> 00:12:19,460 de la clase file, eso me permite a mí instanciar 278 00:12:19,460 --> 00:12:20,679 el objeto file haciendo new 279 00:12:20,679 --> 00:12:23,279 vale, bueno pues cada vez 280 00:12:23,279 --> 00:12:25,360 está cuando uno hace clases para que 281 00:12:25,360 --> 00:12:27,480 otros las usen, cada vez se está 282 00:12:27,480 --> 00:12:29,179 perdiendo más este patrón de diseño 283 00:12:29,179 --> 00:12:31,480 porque es peligroso el permitir al usuario 284 00:12:31,480 --> 00:12:33,419 que él use directamente el constructor 285 00:12:33,419 --> 00:12:35,940 sino que lo que se suele hacer es 286 00:12:35,940 --> 00:12:37,279 lo hago privado 287 00:12:37,279 --> 00:12:38,940 porque constructor tiene que haber 288 00:12:38,940 --> 00:12:40,940 lo hago privado 289 00:12:40,940 --> 00:12:42,259 aunque sea el por defecto 290 00:12:42,259 --> 00:12:42,820 sin parámetros 291 00:12:42,820 --> 00:12:43,620 que no tiene nada dentro 292 00:12:43,620 --> 00:12:44,580 constructor tiene que haber 293 00:12:44,580 --> 00:12:45,179 porque de hecho 294 00:12:45,179 --> 00:12:46,159 si uno hace una clase 295 00:12:46,159 --> 00:12:47,259 y no le pone un constructor 296 00:12:47,259 --> 00:12:48,600 ya hemos dicho 297 00:12:48,600 --> 00:12:49,299 que entonces 298 00:12:49,299 --> 00:12:50,740 hay uno por defecto 299 00:12:50,740 --> 00:12:51,340 sin parámetros 300 00:12:51,340 --> 00:12:51,980 que no hace nada 301 00:12:51,980 --> 00:12:52,860 que se está siempre 302 00:12:52,860 --> 00:12:53,860 aunque yo no escriba nada 303 00:12:53,860 --> 00:12:55,039 pero el constructor tiene que haber 304 00:12:55,039 --> 00:12:55,919 porque si no 305 00:12:55,919 --> 00:12:56,940 no se puede instanciar el objeto 306 00:12:56,940 --> 00:12:58,799 bueno pues entonces 307 00:12:58,799 --> 00:12:59,960 un patrón de diseño 308 00:12:59,960 --> 00:13:01,220 cada vez más habituales 309 00:13:01,220 --> 00:13:02,879 vamos a hacerlo privado 310 00:13:02,879 --> 00:13:05,279 prohíbo al que use mis clases 311 00:13:05,279 --> 00:13:07,100 instanciarme con el new file 312 00:13:07,100 --> 00:13:09,379 y me hago yo un método aparte 313 00:13:09,379 --> 00:13:10,919 que sea crear objeto 314 00:13:10,919 --> 00:13:12,659 y te obligo a que 315 00:13:12,659 --> 00:13:15,379 tú instancies el objeto llamando a crear 316 00:13:15,379 --> 00:13:17,700 objeto y ese crear objeto 317 00:13:17,700 --> 00:13:19,600 ya te llama el constructor 318 00:13:19,600 --> 00:13:21,379 hace dentro todas las verificaciones 319 00:13:21,379 --> 00:13:23,220 de seguridad, se asegura de que tienes 320 00:13:23,220 --> 00:13:25,159 permisos para no sé qué, patatín patatán 321 00:13:25,159 --> 00:13:27,679 y te devuelve el objeto ya creado 322 00:13:27,679 --> 00:13:28,919 ¿vale? 323 00:13:30,279 --> 00:13:30,840 entonces 324 00:13:30,840 --> 00:13:33,860 una forma a veces de ver si una librería 325 00:13:33,860 --> 00:13:35,940 es de las de toda la vida o no 326 00:13:35,940 --> 00:13:37,639 es si permite 327 00:13:37,639 --> 00:13:39,799 o es más moderna, es si permite 328 00:13:39,799 --> 00:13:41,500 instanciar objetos 329 00:13:41,500 --> 00:13:43,600 de esa clase con new o no lo permite 330 00:13:43,600 --> 00:13:45,580 vale, new lo permite porque es que 331 00:13:45,580 --> 00:13:47,580 es una librería que lleva desde Java 2 332 00:13:47,580 --> 00:13:49,419 me parece, entonces por compatibilidad 333 00:13:49,419 --> 00:13:51,379 no ha perdido la posibilidad de instanciar 334 00:13:51,379 --> 00:13:52,419 directamente con el constructor 335 00:13:52,419 --> 00:13:54,379 bueno, pues entonces 336 00:13:54,379 --> 00:13:57,019 para instanciar el objeto file 337 00:13:57,019 --> 00:13:57,980 el de toda la vida 338 00:13:57,980 --> 00:14:02,539 Este objeto es el que se usa siempre 339 00:14:02,539 --> 00:14:03,820 Y vais a ver en todas las aplicaciones 340 00:14:03,820 --> 00:14:06,139 Cuando una aplicación quiere referirse a un fichero 341 00:14:06,139 --> 00:14:06,820 O a una ruta 342 00:14:06,820 --> 00:14:10,519 Pues hay que crear una referencia 343 00:14:10,519 --> 00:14:11,299 A esa ruta 344 00:14:11,299 --> 00:14:14,080 Entonces, en el constructor que tenemos que poner 345 00:14:14,080 --> 00:14:15,240 Pues esa ruta 346 00:14:15,240 --> 00:14:18,980 Se puede poner de dos maneras 347 00:14:18,980 --> 00:14:20,679 Absoluta o relativa 348 00:14:20,679 --> 00:14:24,220 ¿Vale? Por ejemplo, si yo quiero hacer referencia 349 00:14:24,220 --> 00:14:25,179 A mi escritorio 350 00:14:25,179 --> 00:14:29,179 Mi escritorio 351 00:14:29,179 --> 00:14:36,629 Pues no, quería esto, espérate 352 00:14:36,629 --> 00:14:45,509 Bueno, pues vengámonos aquí 353 00:14:45,509 --> 00:14:50,830 Una carpeta cualquiera 354 00:14:50,830 --> 00:15:02,580 Venga, voy a hacer una carpeta 355 00:15:02,580 --> 00:15:03,980 Prueba, ficheros 356 00:15:03,980 --> 00:15:09,399 Aquí en el escritorio 357 00:15:09,399 --> 00:15:10,500 Vale, a ver si 358 00:15:10,500 --> 00:15:13,620 Ahora, esto sí quería 359 00:15:13,620 --> 00:15:22,429 Vale, pues ya he puesto la ruta 360 00:15:22,429 --> 00:15:23,850 He puesto la ruta 361 00:15:23,850 --> 00:15:26,690 de esta ubicación, que en particular 362 00:15:26,690 --> 00:15:28,629 es un directorio, pero podría ser un fichero 363 00:15:28,629 --> 00:15:30,409 da igual, es una ruta 364 00:15:30,409 --> 00:15:32,769 un punto del sistema de archivos, un punto de mi árbol 365 00:15:32,769 --> 00:15:35,049 bueno, pues 366 00:15:35,049 --> 00:15:36,730 el objeto file tiene que 367 00:15:36,730 --> 00:15:38,590 ser referencia a un punto del árbol 368 00:15:38,590 --> 00:15:40,610 a un punto de un árbol, un punto de mi árbol 369 00:15:40,610 --> 00:15:41,250 ¿vale? 370 00:15:42,009 --> 00:15:44,529 esta es una ruta absoluta, porque 371 00:15:44,529 --> 00:15:46,909 parte de C, que es la raíz 372 00:15:46,909 --> 00:15:48,990 de los 373 00:15:48,990 --> 00:15:50,389 archivos 374 00:15:50,389 --> 00:15:51,350 de la unidad C 375 00:15:51,350 --> 00:15:54,149 ¿por qué aparece 376 00:15:54,149 --> 00:15:55,570 dos barritas? 377 00:15:57,070 --> 00:15:58,549 bueno, aparece dos barritas 378 00:15:58,549 --> 00:16:00,649 porque si pusiéramos solamente una 379 00:16:00,649 --> 00:16:06,370 si pusiéramos solamente una barrita 380 00:16:06,370 --> 00:16:10,149 esta barra, que es 381 00:16:10,149 --> 00:16:12,029 para un paese 382 00:16:12,029 --> 00:16:14,210 esto significa 383 00:16:14,210 --> 00:16:16,809 ojo, que empieza un carácter especial 384 00:16:16,809 --> 00:16:18,289 con lo cual, tómame 385 00:16:18,289 --> 00:16:20,289 con la siguiente letra y yo voy a ser 386 00:16:20,289 --> 00:16:21,710 el carácter especial barra U 387 00:16:21,710 --> 00:16:23,730 si es que existe, que igual no existe 388 00:16:23,730 --> 00:16:26,110 los especiales que existen, pues barra T 389 00:16:26,110 --> 00:16:27,409 existe, que es el tabulador 390 00:16:27,409 --> 00:16:30,269 barra S creo que es el espacio, no lo sé 391 00:16:30,269 --> 00:16:32,149 entonces, en la tabla 392 00:16:32,149 --> 00:16:34,490 ASTI hay una serie de caracteres especiales 393 00:16:34,490 --> 00:16:36,490 claro, como el espacio, el tabulador 394 00:16:36,490 --> 00:16:37,690 algunos otros más 395 00:16:37,690 --> 00:16:40,350 y esos caracteres especiales no se pueden escribir 396 00:16:40,350 --> 00:16:42,289 pues la forma de escribirlos 397 00:16:42,289 --> 00:16:44,269 es como carácter de escape, que es la barrita 398 00:16:44,269 --> 00:16:46,350 y una letra 399 00:16:46,350 --> 00:16:46,730 ¿vale? 400 00:16:47,750 --> 00:16:49,909 barra N es el carácter 401 00:16:49,909 --> 00:16:52,409 ASTI salto de línea 402 00:16:52,409 --> 00:16:54,370 entonces el carácter ASTI salto de línea 403 00:16:54,370 --> 00:16:56,269 lo escribimos como barra de escape 404 00:16:56,269 --> 00:16:57,590 y N 405 00:16:57,590 --> 00:17:00,570 entonces si yo aquí dejo solo una barra 406 00:17:00,570 --> 00:17:02,090 esto lo interpreta como 407 00:17:02,090 --> 00:17:04,410 oye, que me refiero a la letra que viene después 408 00:17:04,410 --> 00:17:06,670 cógeme junto con ella y ese es el carácter 409 00:17:06,670 --> 00:17:08,210 ASTI barra U, existe, por otro lado 410 00:17:08,210 --> 00:17:09,990 si existe o no, pero si existiera 411 00:17:09,990 --> 00:17:12,089 pues se referiría a ese carácter 412 00:17:12,089 --> 00:17:14,210 y aquí lo mismo, carácter de escape 413 00:17:14,210 --> 00:17:16,069 barra A, y no, yo no me quiero referir a eso 414 00:17:16,069 --> 00:17:18,529 yo me estoy refiriendo a la barra divisora 415 00:17:18,529 --> 00:17:20,730 de las rutas, a la barra divisora 416 00:17:20,730 --> 00:17:21,950 entonces 417 00:17:21,950 --> 00:17:24,490 como lo indicamos, poniéndole a esa 418 00:17:24,490 --> 00:17:26,509 barra divisora otro carácter 419 00:17:26,509 --> 00:17:27,930 de escape, otra barra de escape 420 00:17:27,930 --> 00:17:40,000 ¿vale? entonces ahora ya 421 00:17:40,000 --> 00:17:41,460 esto sí que lo interpreta como 422 00:17:41,460 --> 00:17:44,259 oye carácter de escape, cógeme con el siguiente 423 00:17:44,259 --> 00:17:46,200 y el siguiente ahora ya sí 424 00:17:46,200 --> 00:17:48,000 que es esta barra, entonces esto lo interpreta 425 00:17:48,000 --> 00:17:51,480 como una única barra, bueno pues 426 00:17:51,480 --> 00:17:52,980 con esto hemos especificado una ubicación 427 00:17:52,980 --> 00:17:54,440 una ubicación 428 00:17:54,440 --> 00:17:57,579 válida sintácticamente 429 00:17:57,579 --> 00:17:59,180 válida sintácticamente 430 00:17:59,180 --> 00:18:01,099 Ahora ya esa ubicación 431 00:18:01,099 --> 00:18:04,420 Puede referirse a una ruta que existe 432 00:18:04,420 --> 00:18:05,400 Que no existe 433 00:18:05,400 --> 00:18:07,980 Que es directorio, que no lo es 434 00:18:07,980 --> 00:18:10,380 De aquí ya podemos sacar un montón de información 435 00:18:10,380 --> 00:18:12,920 Y podemos sacarla 436 00:18:12,920 --> 00:18:15,359 A través de 437 00:18:15,359 --> 00:18:17,900 Los métodos de la clase file 438 00:18:17,900 --> 00:18:18,960 ¿Vale? 439 00:18:32,039 --> 00:18:34,339 O sea, si vemos los métodos que tiene ahora esta clase 440 00:18:34,339 --> 00:18:36,799 Pues tiene un montón de métodos 441 00:18:36,799 --> 00:18:38,359 Para hacer cosas con este fichero 442 00:18:38,359 --> 00:18:40,440 Este te devuelve un true 443 00:18:40,440 --> 00:18:42,980 si tienes permisos y el usuario 444 00:18:42,980 --> 00:18:43,900 que arrancó el proceso 445 00:18:43,900 --> 00:18:46,519 si tiene permisos de ejecución sobre el fichero 446 00:18:46,519 --> 00:18:48,720 este tiene permisos de lectura 447 00:18:48,720 --> 00:18:50,420 si tienes permisos de escritura 448 00:18:50,420 --> 00:18:52,960 este método 449 00:18:52,960 --> 00:18:54,359 compara con otro fichero 450 00:18:54,359 --> 00:18:57,319 para ver si es igual o no es igual 451 00:18:57,319 --> 00:18:59,140 para crear 452 00:18:59,140 --> 00:19:00,140 un nuevo fichero 453 00:19:00,140 --> 00:19:01,339 en esa root 454 00:19:01,339 --> 00:19:04,240 un nuevo fichero con ese nombre 455 00:19:04,240 --> 00:19:06,319 directamente ese 456 00:19:06,319 --> 00:19:07,160 para borrarlo 457 00:19:07,160 --> 00:19:09,160 que este funciona o no funciona 458 00:19:09,160 --> 00:19:11,140 dependiendo de nuestro sistema operativo 459 00:19:11,140 --> 00:19:13,279 y de los permisos que tenga el proceso 460 00:19:13,279 --> 00:19:15,319 no, depende de nuestra 461 00:19:15,319 --> 00:19:16,759 situación, puede funcionar o no 462 00:19:16,759 --> 00:19:19,059 de nuestro equipo, de nuestro usuario, con el que hayamos 463 00:19:19,059 --> 00:19:20,200 arrancado, de muchas cosas 464 00:19:20,200 --> 00:19:22,940 ¿vale? si existe o no existe 465 00:19:22,940 --> 00:19:27,339 te saca el nombre, el nombre sin más 466 00:19:27,339 --> 00:19:29,160 sin la ruta anterior, aquí te saca 467 00:19:29,160 --> 00:19:31,240 la ruta, bueno, pues diferentes cosas 468 00:19:31,240 --> 00:19:33,160 pero tampoco 469 00:19:33,160 --> 00:19:37,549 el tamaño 470 00:19:37,549 --> 00:19:39,750 el tamaño 471 00:19:39,750 --> 00:19:42,109 esto solamente si es fichero 472 00:19:42,109 --> 00:19:43,809 si es directorio, no, la fecha de la última 473 00:19:43,809 --> 00:19:47,259 modificación, te crea 474 00:19:47,259 --> 00:19:48,140 un directorio 475 00:19:48,140 --> 00:19:50,200 con ese nombre 476 00:19:50,200 --> 00:19:52,980 bueno, muchas cosas que puede hacer 477 00:19:52,980 --> 00:19:53,259 ¿vale? 478 00:19:57,420 --> 00:19:58,019 entonces 479 00:19:58,019 --> 00:20:01,140 por ejemplo 480 00:20:01,140 --> 00:20:03,480 vamos a ver 481 00:20:03,480 --> 00:20:08,960 vamos a ver, ¿existe? 482 00:20:09,559 --> 00:20:10,640 pues entonces podemos poner 483 00:20:10,640 --> 00:20:18,000 la ruta o 484 00:20:18,000 --> 00:20:20,440 Como lo queréis llamar, existe 485 00:20:20,440 --> 00:20:33,660 ¿Qué es un directorio? 486 00:20:36,460 --> 00:20:37,740 Pues podemos poner 487 00:20:37,740 --> 00:20:39,640 La ruta 488 00:20:39,640 --> 00:20:42,500 Es un directorio 489 00:20:42,500 --> 00:20:45,839 ¿Qué no? Pues no será un directorio 490 00:20:45,839 --> 00:20:46,819 Entonces será un fichero 491 00:20:46,819 --> 00:20:57,019 ¿Vale? Podríamos sacar información 492 00:20:57,019 --> 00:20:59,039 Vamos a poner una más solo y ya está 493 00:20:59,039 --> 00:21:04,609 Por ejemplo, vamos a ver el length 494 00:21:04,609 --> 00:21:05,269 Que nos saca 495 00:21:05,269 --> 00:21:11,410 En este caso, como es un directorio, a saber lo que nos saca 496 00:21:11,410 --> 00:21:21,680 ¿Vale? 497 00:21:22,019 --> 00:21:34,210 Pues vamos a ejecutar esto 498 00:21:34,210 --> 00:21:44,569 He puesto el main mal 499 00:21:44,569 --> 00:21:46,029 Voy a salir voy main 500 00:21:46,029 --> 00:21:53,250 Porque no me deja ejecutar 501 00:21:53,250 --> 00:22:08,789 Hay algo que 502 00:22:08,789 --> 00:22:12,190 Eso está bien escrito, ¿verdad? 503 00:22:17,390 --> 00:22:19,410 Bueno, es que si no me daría error de 504 00:22:19,410 --> 00:22:20,650 No me da ningún rojo 505 00:22:20,650 --> 00:22:21,950 No me da ningún error de 506 00:22:21,950 --> 00:22:25,130 Ah, no está bien escrito 507 00:22:25,130 --> 00:22:26,089 Si es que 508 00:22:26,089 --> 00:22:28,309 cuando os digo que os fijéis 509 00:22:28,309 --> 00:22:29,849 por mí, no me hacéis caso 510 00:22:29,849 --> 00:22:31,190 vale, ahora ya sí 511 00:22:31,190 --> 00:22:37,130 vale, la ruta existe 512 00:22:37,130 --> 00:22:39,150 es un directorio, tamaño 0 513 00:22:39,150 --> 00:22:40,190 porque es que no es un fichero 514 00:22:40,190 --> 00:22:42,309 vamos a suponer que nos hemos equivocado 515 00:22:42,309 --> 00:22:44,150 y ponemos esto 516 00:22:44,150 --> 00:22:51,019 la ruta es un fichero, pero no me dice la ruta existe 517 00:22:51,019 --> 00:22:52,000 no había un else, ¿no? 518 00:22:53,579 --> 00:22:55,420 vale, entonces me dice 519 00:22:55,420 --> 00:22:57,480 aquí ha entrado en el else 520 00:22:57,480 --> 00:22:58,680 porque eso ha sido un false 521 00:22:58,680 --> 00:23:00,400 entonces no me ha dicho ruta existe 522 00:23:00,400 --> 00:23:01,839 aquí ha entrado en el else 523 00:23:01,839 --> 00:23:04,380 Porque no es un directorio 524 00:23:04,380 --> 00:23:06,299 Entonces por eso me ha dicho la ruta es un fichero 525 00:23:06,299 --> 00:23:07,940 ¿Vale? 526 00:23:07,980 --> 00:23:09,059 Porque ha entrado en el else 527 00:23:09,059 --> 00:23:11,559 Porque un directorio no es 528 00:23:11,559 --> 00:23:14,079 Y luego, pues ruta.len 0 529 00:23:14,079 --> 00:23:16,119 Pero no tiene nada, ni siquiera existía 530 00:23:16,119 --> 00:23:17,920 Si le ponemos un fichero 531 00:23:17,920 --> 00:23:20,000 Por ejemplo 532 00:23:20,000 --> 00:23:21,220 Voy a meter en 533 00:23:21,220 --> 00:23:23,700 Mi carpeta 534 00:23:23,700 --> 00:23:25,400 Prueba ficheros 535 00:23:25,400 --> 00:23:26,539 Un fichero cualquiera 536 00:23:26,539 --> 00:23:29,660 Un fichero cualquiera de texto 537 00:23:29,660 --> 00:23:34,059 Bueno, con un nombre que me pueda acordar luego para escribir 538 00:23:34,059 --> 00:23:40,529 Cambiar nombre 539 00:23:40,529 --> 00:23:45,119 Fichero.txt 540 00:23:45,119 --> 00:23:46,799 Vale, vamos a ponerle algo 541 00:23:46,799 --> 00:23:49,339 Para que tenga bytes 542 00:23:49,339 --> 00:23:56,019 Vale, pues voy a ejecutar esto mismo 543 00:23:56,019 --> 00:23:59,089 Poniéndole 544 00:23:59,089 --> 00:24:01,589 La ruta del fichero que tiene dentro 545 00:24:01,589 --> 00:24:04,509 Fichero.txt 546 00:24:07,150 --> 00:24:09,390 vale, a ver ahora 547 00:24:09,390 --> 00:24:09,990 ¿qué me dice? 548 00:24:10,890 --> 00:24:13,130 le he dado otra ruta, ahora esta es un fichero en concreto 549 00:24:13,130 --> 00:24:15,609 existe, si no la he escrito mal, existe 550 00:24:15,609 --> 00:24:18,289 lo ejecutamos 551 00:24:18,289 --> 00:24:21,430 vale, existe, es un fichero 552 00:24:21,430 --> 00:24:22,369 y tiene 7 bytes 553 00:24:22,369 --> 00:24:25,029 vale, y tendrá 554 00:24:25,029 --> 00:24:26,690 porque creo que he escrito 7 caracteres 555 00:24:26,690 --> 00:24:29,269 y en un fichero de texto hecho con el blog de notas 556 00:24:29,269 --> 00:24:30,869 cada carácter se escribe 557 00:24:30,869 --> 00:24:33,230 en un único byte 558 00:24:33,230 --> 00:24:37,130 vale, entonces 559 00:24:37,130 --> 00:24:39,789 así estaría la ruta absoluta 560 00:24:39,789 --> 00:24:46,579 ¿vale? entonces las rutas 561 00:24:46,579 --> 00:24:48,700 absolutas tienen problemas 562 00:24:48,700 --> 00:24:50,099 claro, que si esta aplicación 563 00:24:50,099 --> 00:24:51,619 yo la muevo 564 00:24:51,619 --> 00:24:54,059 a otro ordenador para ejecutarla 565 00:24:54,059 --> 00:24:55,960 en ese ordenador 566 00:24:55,960 --> 00:24:58,359 será mucha casualidad que el fichero esté 567 00:24:58,359 --> 00:25:00,799 en el mismo sitio, será mucha casualidad 568 00:25:00,799 --> 00:25:02,279 entonces si 569 00:25:02,279 --> 00:25:04,200 y que ese ordenador a lo mejor 570 00:25:04,200 --> 00:25:05,980 el usuario que está trabajando no es admin 571 00:25:05,980 --> 00:25:07,519 está trabajando el usuario Pepito 572 00:25:07,519 --> 00:25:10,279 entonces esta misma aplicación la trato de ejecutar 573 00:25:10,279 --> 00:25:11,019 en otro equipo 574 00:25:11,019 --> 00:25:14,819 y esta ruta ya no se corresponde. 575 00:25:15,000 --> 00:25:17,079 A lo mejor el usuario tiene el archivo de trabajo, lo tiene. 576 00:25:17,819 --> 00:25:19,839 Pero no lo tiene en esta ruta, lo tiene en otra. 577 00:25:20,119 --> 00:25:23,400 Entonces, las rutas absolutas tienen ese peligro. 578 00:25:24,839 --> 00:25:27,579 Entonces, hay otra forma de referirnos, 579 00:25:27,660 --> 00:25:28,660 de darle aquí una ruta, 580 00:25:29,259 --> 00:25:30,759 que es darle una ruta relativa. 581 00:25:34,940 --> 00:25:37,480 Entonces, ¿la ruta relativa es relativa a qué? 582 00:25:37,480 --> 00:25:39,279 Si es relativa, ¿es relativa a algún punto? 583 00:25:39,900 --> 00:25:42,700 Bueno, pues el punto respecto al cual es relativa 584 00:25:42,700 --> 00:25:45,180 la ruta para Java, para la aplicación 585 00:25:45,180 --> 00:25:47,039 es la raíz del proyecto 586 00:25:47,039 --> 00:25:47,759 en el que estás 587 00:25:47,759 --> 00:25:59,589 entonces, a partir de ese punto 588 00:25:59,589 --> 00:26:01,269 tú ya puedes poner 589 00:26:01,269 --> 00:26:03,490 una ruta, por ejemplo 590 00:26:03,490 --> 00:26:04,690 vamos a poner 591 00:26:04,690 --> 00:26:09,579 aquí otra 592 00:26:09,579 --> 00:26:12,519 entonces, yo quiero que esta 593 00:26:12,519 --> 00:26:13,420 aplicación sea 594 00:26:13,420 --> 00:26:16,640 portable, es decir 595 00:26:16,640 --> 00:26:18,079 que cuando alguien la coja 596 00:26:18,079 --> 00:26:20,859 y la lleve a su ordenador y la ejecute 597 00:26:20,859 --> 00:26:22,500 le funcione y encuentre 598 00:26:22,500 --> 00:26:24,680 el fichero, porque si no encuentra el fichero 599 00:26:24,680 --> 00:26:27,059 obviamente no le va a funcionar 600 00:26:27,059 --> 00:26:28,579 bueno 601 00:26:28,579 --> 00:26:30,140 pues entonces 602 00:26:30,140 --> 00:26:32,579 lo habitual es que yo 603 00:26:32,579 --> 00:26:33,720 ponga ese fichero 604 00:26:33,720 --> 00:26:36,539 dentro del proyecto, donde a mi me dé 605 00:26:36,539 --> 00:26:38,539 la gana, por ejemplo 606 00:26:38,539 --> 00:26:40,380 voy a crear dentro 607 00:26:40,380 --> 00:26:42,519 del proyecto una nueva carpeta 608 00:26:42,519 --> 00:26:50,250 una nueva carpeta 609 00:26:50,250 --> 00:26:54,029 la voy a llamar fichero, o sea esa carpeta 610 00:26:54,029 --> 00:26:58,380 si en new folder me he 611 00:26:58,380 --> 00:27:00,079 situado en la raíz del proyecto 612 00:27:00,079 --> 00:27:01,180 lo que se nombra el proyecto 613 00:27:01,180 --> 00:27:08,380 ¿vale? y aquí en mi raíz del proyecto he creado 614 00:27:08,380 --> 00:27:10,339 una carpeta, que esa carpeta 615 00:27:10,339 --> 00:27:12,220 pues está aquí, claro, si yo me voy ahora 616 00:27:12,220 --> 00:27:14,079 al sistema de archivos 617 00:27:14,079 --> 00:27:16,380 pues aquí está mi 618 00:27:16,380 --> 00:27:18,339 proyecto, este de aquí 619 00:27:18,339 --> 00:27:19,599 ejemplos, entrada, salida 620 00:27:19,599 --> 00:27:22,319 y dentro de ejemplos 621 00:27:22,319 --> 00:27:24,440 entrada, salida, pues está 622 00:27:24,440 --> 00:27:26,319 esta carpeta que me acabo de crear, junto 623 00:27:26,319 --> 00:27:27,980 con la fuente de los 624 00:27:27,980 --> 00:27:30,359 la bin, las que están siempre, pues también está 625 00:27:30,359 --> 00:27:32,380 esta, y aquí por ejemplo 626 00:27:32,380 --> 00:27:33,500 me voy a hacer un archivo 627 00:27:33,500 --> 00:27:35,759 cualquiera 628 00:27:35,759 --> 00:27:42,140 al que le meto datos 629 00:27:42,140 --> 00:27:43,160 lo que yo quiera 630 00:27:43,160 --> 00:27:51,339 bueno 631 00:27:51,339 --> 00:27:53,579 si se te ha hecho dentro de src 632 00:27:53,579 --> 00:27:55,440 igual es porque has hecho el new 633 00:27:55,440 --> 00:27:59,009 aquí, entonces hace el new 634 00:27:59,009 --> 00:27:59,690 pinchando aquí 635 00:27:59,690 --> 00:28:10,599 vale, pues entonces 636 00:28:10,599 --> 00:28:12,660 ahora ya sí que nos podemos referir 637 00:28:12,660 --> 00:28:14,960 vamos a crear una referencia 638 00:28:14,960 --> 00:28:16,799 file a esa ruta 639 00:28:16,799 --> 00:28:17,980 pero ya de forma relativa 640 00:28:17,980 --> 00:28:20,160 entonces como la raíz 641 00:28:20,160 --> 00:28:22,579 es donde está mi proyecto 642 00:28:22,579 --> 00:28:24,200 yo ahora ya pongo directamente 643 00:28:24,200 --> 00:28:26,559 la subcarpeta de mi raíz que es ficheros 644 00:28:26,559 --> 00:28:28,480 y pongo el 645 00:28:28,480 --> 00:28:29,279 fichero 646 00:28:29,279 --> 00:28:33,390 entonces esta ruta se refiere 647 00:28:33,390 --> 00:28:34,769 a que todo esto 648 00:28:34,769 --> 00:28:37,829 la máquina virtual asume que está 649 00:28:37,829 --> 00:28:38,529 colgando 650 00:28:38,529 --> 00:28:41,950 de la raíz del proyecto 651 00:28:41,950 --> 00:28:43,430 asume que está colgando de ahí 652 00:28:43,430 --> 00:28:45,910 lo concatena a la raíz del proyecto 653 00:28:45,910 --> 00:28:47,750 y en este caso 654 00:28:47,750 --> 00:28:49,890 efectivamente le lleva a un sitio que existe 655 00:28:49,890 --> 00:28:52,150 si no existe no pasa nada 656 00:28:52,150 --> 00:28:53,269 la referencia se crea igual 657 00:28:53,269 --> 00:28:55,609 pero simplemente esa referencia no existe 658 00:28:55,609 --> 00:28:57,390 y si yo le doy a exist me dirá 659 00:28:57,390 --> 00:28:58,730 no existe esa referencia 660 00:28:58,730 --> 00:29:04,930 bueno es relativa 661 00:29:04,930 --> 00:29:07,930 pero es 662 00:29:07,930 --> 00:29:09,890 relativa porque no 663 00:29:09,890 --> 00:29:10,670 cuelga del raíz 664 00:29:10,670 --> 00:29:15,380 ni de ninguna 665 00:29:15,380 --> 00:29:18,599 pero no cuelga de la raíz suprema 666 00:29:18,599 --> 00:29:22,700 claro por eso es relativa 667 00:29:22,700 --> 00:29:25,079 o sea, las absolutas son las que cuelgan 668 00:29:25,079 --> 00:29:26,519 de la raíz del sistema operativo 669 00:29:26,519 --> 00:29:29,140 las relativas son las que cuelgan de un punto intermedio 670 00:29:29,140 --> 00:29:31,019 sea el que sea, un punto intermedio 671 00:29:31,019 --> 00:29:32,559 es así, o sea 672 00:29:32,559 --> 00:29:34,660 las raíces absolutas son las unidades 673 00:29:34,660 --> 00:29:36,440 fe, de, esas raíces absolutas 674 00:29:36,440 --> 00:29:38,960 raíz relativa, cualquiera entre medias 675 00:29:38,960 --> 00:29:41,039 cualquiera entre medias, entonces la de arriba 676 00:29:41,039 --> 00:29:43,319 cuelga de la raíz absoluta 677 00:29:43,319 --> 00:29:44,940 de una de las que hay 678 00:29:44,940 --> 00:29:46,640 si hay varias unidades, en Linux solo hay una 679 00:29:46,640 --> 00:29:49,440 raíz absoluta 680 00:29:49,440 --> 00:29:51,059 y esta relativa porque te 681 00:29:51,059 --> 00:29:52,380 cuelga de un punto intermedio 682 00:29:52,380 --> 00:29:55,559 entonces, él aquí 683 00:29:55,559 --> 00:29:58,160 no ve que haya una ruta absoluta 684 00:29:58,160 --> 00:30:00,140 porque no está viendo ni C, ni D, ni nada 685 00:30:00,140 --> 00:30:02,539 entonces dice, ah, tú no eres ruta absoluta 686 00:30:02,539 --> 00:30:03,980 eres relativa, es relativa 687 00:30:03,980 --> 00:30:06,160 ¿y de dónde cuelgas? porque si es relativa 688 00:30:06,160 --> 00:30:08,500 falta una información, que es el punto de cuelgue 689 00:30:08,500 --> 00:30:10,099 cuando es absoluta no falta ninguna 690 00:30:10,099 --> 00:30:11,019 información, está aquí 691 00:30:11,019 --> 00:30:14,160 pero cuando es relativa, te falta una información 692 00:30:14,160 --> 00:30:15,500 ¿y tú de dónde cuelgas? 693 00:30:15,640 --> 00:30:18,059 esa información es raíz del proyecto 694 00:30:18,059 --> 00:30:19,579 raíz del proyecto 695 00:30:19,579 --> 00:30:22,519 esta información adicional no le hace falta 696 00:30:22,519 --> 00:30:23,839 ¿vale? 697 00:30:27,500 --> 00:30:28,700 bueno pues entonces 698 00:30:28,700 --> 00:30:30,920 esta cuelga de la raíz del proyecto 699 00:30:30,920 --> 00:30:32,480 y concatenada 700 00:30:32,480 --> 00:30:33,680 que igual es lo que te confunde 701 00:30:33,680 --> 00:30:36,480 cuando él ya la concatena internamente 702 00:30:36,480 --> 00:30:37,680 a la raíz del proyecto 703 00:30:37,680 --> 00:30:40,460 obviamente la que forma él es absoluta 704 00:30:40,460 --> 00:30:42,039 porque está colgada de la raíz 705 00:30:42,039 --> 00:30:43,799 pero la que tú escribes aquí 706 00:30:43,799 --> 00:30:44,960 la que ves con tus ojos 707 00:30:44,960 --> 00:30:46,519 esta es relativa 708 00:30:46,519 --> 00:30:48,099 Porque esta es 709 00:30:48,099 --> 00:30:49,519 Necesita una información adicional 710 00:30:49,519 --> 00:30:50,759 Que tú no le estás dando 711 00:30:50,759 --> 00:30:53,940 Esta no necesita ninguna información adicional 712 00:30:53,940 --> 00:30:54,859 La estás dando toda 713 00:30:54,859 --> 00:30:57,279 Por eso es absoluto, no necesitas nada más 714 00:30:57,279 --> 00:30:59,660 Esta necesitas algo más 715 00:30:59,660 --> 00:31:00,559 Si no está incompleta 716 00:31:00,559 --> 00:31:02,880 Por eso es relativa, porque está incompleta 717 00:31:02,880 --> 00:31:05,240 Y ese algo más, ¿cuál es? 718 00:31:05,319 --> 00:31:07,000 La raíz del proyecto, por convenio 719 00:31:07,000 --> 00:31:09,480 Podría ser otra cosa, pero por convenio la raíz del proyecto 720 00:31:09,480 --> 00:31:13,369 Vale, bueno, pues entonces 721 00:31:13,369 --> 00:31:17,950 Si hacemos esto mismo con ruta 2 722 00:31:17,950 --> 00:31:29,609 no le he puesto el punto y coma 723 00:31:29,609 --> 00:31:39,089 vale, pues existe, es un fichero 724 00:31:39,089 --> 00:31:40,970 y tiene seis, los que he metido 725 00:31:40,970 --> 00:31:43,049 vale, en este caso es un fichero y ya está 726 00:31:43,049 --> 00:31:44,950 vale 727 00:31:44,950 --> 00:31:46,210 bueno, pues entonces 728 00:31:46,210 --> 00:31:49,190 esta clase es la clase que se usa 729 00:31:49,190 --> 00:31:50,750 para desde una aplicación 730 00:31:50,750 --> 00:31:51,970 referirse a un fichero 731 00:31:51,970 --> 00:31:54,970 no es la clase que se usa para leer de él 732 00:31:54,970 --> 00:31:56,849 y escribir en él, para leer de él 733 00:31:56,849 --> 00:31:59,049 y escribir en él se usan otras clases que veremos 734 00:31:59,049 --> 00:32:01,190 ahora, esta se usa para referirse 735 00:32:01,190 --> 00:32:01,710 a un fichero 736 00:32:01,710 --> 00:32:04,450 ¿Y por qué es importante referirse a un fichero? 737 00:32:04,529 --> 00:32:06,490 Porque muchas veces las aplicaciones 738 00:32:06,490 --> 00:32:08,210 Los métodos de las aplicaciones 739 00:32:08,210 --> 00:32:10,369 Necesitan que tú le pases como parámetros ficheros 740 00:32:10,369 --> 00:32:11,329 Para trabajar con ellos 741 00:32:11,329 --> 00:32:14,509 Pues cuando tú pasas como parámetro un fichero 742 00:32:14,509 --> 00:32:16,049 Cuando entregas un fichero 743 00:32:16,049 --> 00:32:18,230 Para decir, trabaja con él 744 00:32:18,230 --> 00:32:21,049 ¿Dónde lo pasas? 745 00:32:21,170 --> 00:32:22,289 En un objeto file 746 00:32:22,289 --> 00:32:23,750 ¿Vale? En un objeto file 747 00:32:23,750 --> 00:32:26,609 Por ejemplo, vamos a hacer un método que nos dice 748 00:32:26,609 --> 00:32:28,849 Método que 749 00:32:28,849 --> 00:32:30,789 Necesita una funcionalidad que sea 750 00:32:30,789 --> 00:32:32,450 te voy a pasar un array de ficheros 751 00:32:32,450 --> 00:32:34,849 que veremos a ver de dónde lo sacamos 752 00:32:34,849 --> 00:32:36,829 ahora, pero el método se le pasa 753 00:32:36,829 --> 00:32:37,829 un array de ficheros 754 00:32:37,829 --> 00:32:40,210 y ahora me tienes que decir 755 00:32:40,210 --> 00:32:42,829 el que tiene más bytes 756 00:32:42,829 --> 00:32:44,529 de todos, por ejemplo, ¿vale? 757 00:32:45,390 --> 00:32:46,690 entonces, ese método 758 00:32:46,690 --> 00:32:48,930 que te pueden haber 759 00:32:48,930 --> 00:32:49,990 pedido un método, que sea 760 00:32:49,990 --> 00:32:51,470 el método 761 00:32:51,470 --> 00:32:54,410 recibe un 762 00:32:54,410 --> 00:32:56,029 array de 763 00:32:56,029 --> 00:32:57,630 ficheros 764 00:32:57,630 --> 00:33:04,380 y devuelve 765 00:33:04,380 --> 00:33:07,779 el fichero 766 00:33:07,779 --> 00:33:09,420 de mayor tamaño 767 00:33:09,420 --> 00:33:13,519 ¿vale? por ejemplo, pues yo que sé 768 00:33:13,519 --> 00:33:15,579 puede ser interesante hacer un método que 769 00:33:15,579 --> 00:33:18,119 oye, estos son los ficheros que he encontrado en esta carpeta 770 00:33:18,119 --> 00:33:19,960 devuélveme el que sea mayor 771 00:33:19,960 --> 00:33:21,880 porque el que sea mayor es el que tengo que eliminar 772 00:33:21,880 --> 00:33:23,779 o el que tengo que tener en cuenta o lo que sea 773 00:33:23,779 --> 00:33:25,480 bueno, pues podría 774 00:33:25,480 --> 00:33:27,640 uno necesitar hacer un método así 775 00:33:27,640 --> 00:33:30,099 ¿vale? porque las funcionalidades que uno hace 776 00:33:30,099 --> 00:33:32,019 siempre las meten métodos 777 00:33:32,019 --> 00:33:34,299 claro, uno hace un método con las funcionalidades 778 00:33:34,299 --> 00:33:36,519 ahí encapsula la funcionalidad en un método 779 00:33:36,519 --> 00:33:39,160 y luego ya la aplicación llama a los métodos que van 780 00:33:39,160 --> 00:33:39,759 interesando 781 00:33:39,759 --> 00:33:43,240 bueno, pues vamos a encapsular esta funcionalidad 782 00:33:43,240 --> 00:33:45,279 concreta de coger una raíz de ficheros 783 00:33:45,279 --> 00:33:47,259 y devolver el más grande de todos, el de más 784 00:33:47,259 --> 00:33:49,240 tamaño, vamos a encapsularla 785 00:33:49,240 --> 00:33:51,059 en este método, para que la llame quien quiera 786 00:33:51,059 --> 00:33:53,380 bueno, pues 787 00:33:53,380 --> 00:33:55,640 siempre que hacemos un método, como de costumbre 788 00:33:55,640 --> 00:33:57,200 nombre lo mejor 789 00:33:57,200 --> 00:33:59,339 elegido posible, aunque sea muy largo 790 00:33:59,339 --> 00:34:01,339 pues 791 00:34:01,339 --> 00:34:05,660 fichero 792 00:34:05,660 --> 00:34:09,380 Mayor tamaño 793 00:34:09,380 --> 00:34:11,420 Bueno, es que 794 00:34:11,420 --> 00:34:13,340 Las señas no las quiero poner 795 00:34:13,340 --> 00:34:18,590 Fichero más grande 796 00:34:18,590 --> 00:34:20,789 Aunque sea un poco feo 797 00:34:20,789 --> 00:34:22,269 Vale 798 00:34:22,269 --> 00:34:23,869 Bueno, pues ahora 799 00:34:23,869 --> 00:34:26,489 Parámetros que recibe este método 800 00:34:26,489 --> 00:34:28,590 Este método tiene que 801 00:34:28,590 --> 00:34:30,710 Recibir 802 00:34:30,710 --> 00:34:33,050 Muchos ficheros 803 00:34:33,050 --> 00:34:35,210 Muchos podría meterlo 804 00:34:35,210 --> 00:34:36,750 En una lista, podría meterlo en un array 805 00:34:36,750 --> 00:34:37,690 Podría meterlo en cualquier cosa 806 00:34:37,690 --> 00:34:40,989 un array 807 00:34:40,989 --> 00:34:42,949 no es una opción que tengamos 808 00:34:42,949 --> 00:34:44,230 que desestimar solo 809 00:34:44,230 --> 00:34:46,969 porque da pereza insertar 810 00:34:46,969 --> 00:34:48,690 y sacar cosas de ella y porque 811 00:34:48,690 --> 00:34:49,469 sea estática 812 00:34:49,469 --> 00:34:52,869 es decir, los arrays dan pereza 813 00:34:52,869 --> 00:34:55,230 dan pereza por esas dos razones 814 00:34:55,230 --> 00:34:56,849 porque 815 00:34:56,849 --> 00:34:58,949 una vez 816 00:34:58,949 --> 00:35:01,010 que están instanciados 817 00:35:01,010 --> 00:35:03,090 el tamaño con el que se ha instanciado 818 00:35:03,090 --> 00:35:04,929 no puede variar, entonces por eso dan 819 00:35:04,929 --> 00:35:06,829 pereza, que quiero meter algo adicional 820 00:35:06,829 --> 00:35:08,789 tengo que crear uno nuevo 821 00:35:08,789 --> 00:35:10,650 más grande y copiar y pegar 822 00:35:10,650 --> 00:35:13,030 ¿vale? una vez que están instanciados 823 00:35:13,030 --> 00:35:15,090 es por lo único 824 00:35:15,090 --> 00:35:15,949 por lo que dan pereza 825 00:35:15,949 --> 00:35:18,750 pero por lo demás son todo, todo, todo 826 00:35:18,750 --> 00:35:20,550 ventajas, en cuanto a que son 827 00:35:20,550 --> 00:35:21,730 la estructura nativa 828 00:35:21,730 --> 00:35:24,909 de la aplicación, las listas, los conjuntos 829 00:35:24,909 --> 00:35:26,769 son clases que se han construido por encima 830 00:35:26,769 --> 00:35:28,429 y tienen un montón de morralla 831 00:35:28,429 --> 00:35:30,530 ¿vale? eso sí 832 00:35:30,530 --> 00:35:31,750 son muy fáciles de usar 833 00:35:31,750 --> 00:35:34,210 son facilísimos de usar 834 00:35:34,210 --> 00:35:36,550 pero claro, por detrás 835 00:35:36,550 --> 00:35:38,949 hay un montón de lógica que es morraya 836 00:35:38,949 --> 00:35:40,610 pero tú no la usas muy fácilmente 837 00:35:40,610 --> 00:35:42,929 el array es lo mejor del mundo 838 00:35:42,929 --> 00:35:44,650 lo que pasa es que da pereza usarlo 839 00:35:44,650 --> 00:35:46,829 por eso que decimos, porque tiene un tamaño 840 00:35:46,829 --> 00:35:48,929 fijo, pero bueno, en este caso 841 00:35:48,929 --> 00:35:50,670 en un método 842 00:35:50,670 --> 00:35:52,449 te pasan el parámetro 843 00:35:52,449 --> 00:35:54,510 bueno, pues estupendo, pásame 844 00:35:54,510 --> 00:35:56,690 un array, ya está, y el array 845 00:35:56,690 --> 00:35:58,309 tú me lo pasas del tamaño que quieras 846 00:35:58,309 --> 00:36:00,630 7, 12, 15, del que quieras 847 00:36:00,630 --> 00:36:02,610 y yo ya como tengo el método 848 00:36:02,610 --> 00:36:04,750 el parámetro length para ver 849 00:36:04,750 --> 00:36:06,769 su tamaño, pues porque no voy a 850 00:36:06,769 --> 00:36:08,690 elegir un array, si es lo mejor del mundo 851 00:36:08,690 --> 00:36:10,090 pues venga 852 00:36:10,090 --> 00:36:12,889 vamos, en este 853 00:36:12,889 --> 00:36:14,730 caso entonces, haríamos 854 00:36:14,730 --> 00:36:17,780 esto, vale 855 00:36:17,780 --> 00:36:20,619 este sería el parámetro 856 00:36:20,619 --> 00:36:22,380 un montón 857 00:36:22,380 --> 00:36:24,239 de objetos file 858 00:36:24,239 --> 00:36:27,500 este un montón 859 00:36:27,500 --> 00:36:29,940 puede ser de cualquier referencia, ya lo sabemos 860 00:36:29,940 --> 00:36:31,760 este un montón podría 861 00:36:31,760 --> 00:36:33,920 ser de alumno, de string, de lo 862 00:36:33,920 --> 00:36:36,139 que sea, pues en este caso este un montón 863 00:36:36,139 --> 00:36:37,059 es de file 864 00:36:37,059 --> 00:36:39,840 ¿Vale? File es otra clase más 865 00:36:39,840 --> 00:36:42,059 ¿Vale? 866 00:36:42,940 --> 00:36:43,320 Que 867 00:36:43,320 --> 00:36:47,019 Queremos que se pase en una lista 868 00:36:47,019 --> 00:36:49,400 Por alguna razón, pues es exactamente igual 869 00:36:49,400 --> 00:36:51,300 La lista estaría 870 00:36:51,300 --> 00:36:53,300 Parametrizada a file 871 00:36:53,300 --> 00:36:54,480 File es una clase más 872 00:36:54,480 --> 00:36:56,860 Como si fuera string, alumno, cliente, factura 873 00:36:56,860 --> 00:36:58,320 Es una clase más que ahora ya sabemos 874 00:36:58,320 --> 00:36:59,780 Lo que significa 875 00:36:59,780 --> 00:37:03,079 Pero lo que queremos es pasar un array 876 00:37:03,079 --> 00:37:03,780 De ficheros 877 00:37:03,780 --> 00:37:06,400 que a la hora de pasar por parámetros 878 00:37:06,400 --> 00:37:07,179 se usa más 879 00:37:07,179 --> 00:37:10,059 porque cuando yo paso por parámetro 880 00:37:10,059 --> 00:37:11,280 aquí 881 00:37:11,280 --> 00:37:14,460 el problema de que el tamaño sea 882 00:37:14,460 --> 00:37:16,400 no lo pueda cambiar 883 00:37:16,400 --> 00:37:17,500 aquí no afecta 884 00:37:17,500 --> 00:37:19,960 porque aquí el parámetro es el que 885 00:37:19,960 --> 00:37:21,880 a mí me están dando, que ya está hecho 886 00:37:21,880 --> 00:37:24,420 entonces yo ya no tengo ese problema 887 00:37:24,420 --> 00:37:26,179 de con qué tamaño instanciarlo 888 00:37:26,179 --> 00:37:28,059 es que ya me lo están dando, con el tamaño que sea 889 00:37:28,059 --> 00:37:30,619 entonces para paso por parámetro 890 00:37:30,619 --> 00:37:32,219 es una situación en la que 891 00:37:32,219 --> 00:37:34,380 vemos más a menudo que cuando tengo que pasar 892 00:37:34,380 --> 00:37:35,460 muchos de algo 893 00:37:35,460 --> 00:37:38,199 se pasa como array, muchos de algo 894 00:37:38,199 --> 00:37:40,219 porque para el método es mucho más cómodo 895 00:37:40,219 --> 00:37:42,400 recorrerlo como array que como lista 896 00:37:42,400 --> 00:37:43,440 que como, vale 897 00:37:43,440 --> 00:37:46,519 bueno, pues nada 898 00:37:46,519 --> 00:37:48,179 hemos elegido array, pues hemos elegido array 899 00:37:48,179 --> 00:37:49,840 vale, y que va a devolver 900 00:37:49,840 --> 00:37:52,280 este, un objeto fichero 901 00:37:52,280 --> 00:37:54,280 con el fichero más grande, pues si va a devolver un objeto 902 00:37:54,280 --> 00:37:55,260 fichero, pues esto 903 00:37:55,260 --> 00:37:58,619 ahora la cabecera del método ya está 904 00:37:58,619 --> 00:38:00,159 public 905 00:38:00,159 --> 00:38:02,780 Si es que yo quiero que se use desde fuera de la clase 906 00:38:02,780 --> 00:38:04,340 En este caso 907 00:38:04,340 --> 00:38:05,880 Como la voy a usar 908 00:38:05,880 --> 00:38:07,500 Aquí dentro de este método 909 00:38:07,500 --> 00:38:09,840 La voy a usar aquí dentro de este método 910 00:38:09,840 --> 00:38:11,860 La voy a poner static 911 00:38:11,860 --> 00:38:14,260 Para poder usarla 912 00:38:14,260 --> 00:38:15,059 Desde aquí dentro 913 00:38:15,059 --> 00:38:19,500 Porque si no le pongo el static 914 00:38:19,500 --> 00:38:22,280 Y yo la quiero usar 915 00:38:22,280 --> 00:38:23,079 Desde aquí dentro 916 00:38:23,079 --> 00:38:26,989 ¿Qué tendría que hacer? 917 00:38:29,369 --> 00:38:31,489 Para que no me dé error de compilación 918 00:38:31,489 --> 00:38:33,610 Voy a poner return null para que se quede tranquilo 919 00:38:33,610 --> 00:38:34,289 El compilador 920 00:38:34,289 --> 00:38:36,030 vale 921 00:38:36,030 --> 00:38:38,230 así el método ya está bien 922 00:38:38,230 --> 00:38:40,369 return null y ahora pregunto 923 00:38:40,369 --> 00:38:42,250 repito que todo esto 924 00:38:42,250 --> 00:38:43,230 lo estoy utilizando 925 00:38:43,230 --> 00:38:46,269 para reforzar o repasar 926 00:38:46,269 --> 00:38:48,349 las cosas que 927 00:38:48,349 --> 00:38:50,750 tenemos que saber 928 00:38:50,750 --> 00:38:52,030 vale 929 00:38:52,030 --> 00:38:53,610 si yo a este método no le pongo static 930 00:38:53,610 --> 00:38:55,989 porque no me da la gana ponerlo static 931 00:38:55,989 --> 00:38:58,269 y quiero usarlo desde aquí 932 00:38:58,269 --> 00:38:58,710 dentro 933 00:38:58,710 --> 00:39:00,710 ¿qué tendría que hacer? 934 00:39:03,670 --> 00:39:06,150 dictadme que tendría que hacer para poder llamar a ese método 935 00:39:06,150 --> 00:39:12,550 desde aquí, está claro que esto 936 00:39:12,550 --> 00:39:13,289 no puedo, ¿verdad? 937 00:39:19,199 --> 00:39:19,880 espera, voy a 938 00:39:19,880 --> 00:39:21,699 para que el compilador se calle 939 00:39:21,699 --> 00:39:22,800 voy a hacer aquí 940 00:39:22,800 --> 00:39:25,719 una referencia 941 00:39:25,719 --> 00:39:34,090 efectivamente 942 00:39:34,090 --> 00:39:35,230 vale, entonces 943 00:39:35,230 --> 00:39:39,690 si yo lo llamo así 944 00:39:39,690 --> 00:39:43,070 obviamente me está diciendo 945 00:39:43,070 --> 00:39:44,530 no puedes hacer 946 00:39:44,530 --> 00:39:46,809 no puedes llamar 947 00:39:46,809 --> 00:39:49,349 a un método o a un recurso 948 00:39:49,349 --> 00:39:51,530 no estático desde este contexto 949 00:39:51,530 --> 00:39:53,150 tuyo en el que estás que es estático 950 00:39:53,150 --> 00:39:54,570 el error que ya sabemos 951 00:39:54,570 --> 00:39:57,070 entonces si yo hago estático esto 952 00:39:57,070 --> 00:39:59,269 pues entonces es magnífico 953 00:39:59,269 --> 00:40:01,329 ya puedo, vale, pero yo no quiero 954 00:40:01,329 --> 00:40:03,369 hacerlo estático, no quiero hacerlo estático porque este 955 00:40:03,369 --> 00:40:05,630 método, por la razón que sea 956 00:40:05,630 --> 00:40:07,329 no quiero hacerlo estático, vale, pues entonces 957 00:40:07,329 --> 00:40:09,289 ¿cómo puedo arreglar esto? 958 00:40:09,369 --> 00:40:10,550 para poder seguirlo llamando 959 00:40:10,550 --> 00:40:15,599 instanciando un objeto de qué clase 960 00:40:15,599 --> 00:40:15,980 vale 961 00:40:15,980 --> 00:40:18,360 miento, no 962 00:40:18,360 --> 00:40:20,500 la clase que contiene 963 00:40:20,500 --> 00:40:22,659 efectivamente, efectivamente 964 00:40:22,659 --> 00:40:24,719 efectivamente, tendríamos que instanciar 965 00:40:24,719 --> 00:40:25,820 un objeto de esta clase 966 00:40:25,820 --> 00:40:28,539 y ahora ya un objeto concreto 967 00:40:28,539 --> 00:40:30,440 de esa clase puede llamar a todos un método 968 00:40:30,440 --> 00:40:32,559 sean estáticos o no, pero necesito un objeto 969 00:40:32,559 --> 00:40:34,800 de esa clase, vale, entonces tendría 970 00:40:34,800 --> 00:40:36,539 que instanciar 971 00:40:36,539 --> 00:40:38,420 un new ejemplo 972 00:40:38,420 --> 00:40:41,679 file, vale 973 00:40:41,679 --> 00:40:43,980 y ahora ya con este objeto 974 00:40:43,980 --> 00:40:46,019 instanciado, ya puedo llamar a sus 975 00:40:46,019 --> 00:40:47,679 propiedades que no tiene 976 00:40:47,679 --> 00:40:50,059 a sus métodos, a lo que yo 977 00:40:50,059 --> 00:40:51,179 quiera, vale 978 00:40:51,179 --> 00:40:53,619 Eso si es que yo 979 00:40:53,619 --> 00:40:54,860 No quiero hacer esto estático 980 00:40:54,860 --> 00:40:56,460 Pero 981 00:40:56,460 --> 00:40:58,820 De hecho lo voy a dejar así 982 00:40:58,820 --> 00:41:01,260 En el proyecto para que no 983 00:41:01,260 --> 00:41:03,360 Sigáis 984 00:41:03,360 --> 00:41:05,099 Teniendo presente estas cosas 985 00:41:05,099 --> 00:41:07,159 Bueno pero ahora volvemos ya a nuestro método 986 00:41:07,159 --> 00:41:09,300 ¿Vale? A nuestro método 987 00:41:09,300 --> 00:41:10,800 Pues venga 988 00:41:10,800 --> 00:41:15,699 ¿Lo hacéis? 989 00:41:17,159 --> 00:41:18,440 Sí, venga 990 00:41:18,440 --> 00:41:19,960 Lo hacéis