Saltar navegación

20250327 Ficheros_3 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 2 de abril de 2025 por Raquel G.

17 visualizaciones

Descargar la transcripción

Vale, pues, vamos ahora con la clase FileWriter para poder 00:00:00
hacer ya lo básico con ficheros, lo básico. 00:00:04
Bueno, pues, el objeto FileWriter lo instanciamos cuando 00:00:09
queremos escribir en un archivo. 00:00:12
Podemos escribir varios de golpe, de uno en uno, 00:00:14
en cualquier caso es para llevar caracteres a un archivo. 00:00:17
Vale. 00:00:21
Entonces, ¿cuándo podemos, a lo mejor, 00:00:21
un ejemplo en el que podamos utilizar esta clase? 00:00:23
no, no, no, esto 00:00:25
olvídate, es como si no existiera, lo he puesto para acceder 00:00:30
a la clase y ver en la explicación 00:00:33
que 00:00:35
para que se usa 00:00:35
pero 00:00:38
pero lo quito 00:00:39
esto era result 00:00:43
más igual 00:00:45
char c y aquí era 00:00:47
return result 00:00:50
porque convertir a string en string ya si que sería 00:00:52
Así es como estaba, ¿vale? 00:00:54
Este está claro, ¿vale? 00:00:57
Pues vamos a hacer un método 00:01:00
Por ejemplo, que esté 00:01:01
Pues continúa, que esté pidiendo 00:01:03
Líneas 00:01:06
Por el teclado 00:01:07
Y las vaya guardando en un archivo 00:01:09
Y ya está 00:01:12
Voy, escribe 00:01:12
Fichero 00:01:22
Vale 00:01:25
¿En qué fichero 00:01:27
Vamos a escribir 00:01:28
estas líneas que nos pida 00:01:29
pues en el fichero cuyo nombre 00:01:31
le pasamos 00:01:33
por teclado 00:01:34
vale, venga 00:01:37
escribimos fichero, hemos dicho 00:01:42
este método va a funcionar simplemente 00:01:44
un bucle que está todo el rato pidiendo líneas 00:01:46
hasta que introduzcamos la cadena fin 00:01:48
por ejemplo, y todas esas líneas 00:01:50
las guarda en un fichero, ala, ya está 00:01:52
pues venga 00:01:54
para leer líneas, pues un bucle 00:01:56
las líneas que vamos leyendo, pues por ejemplo 00:01:58
las podemos ir guardando aquí 00:02:00
y ahora 00:02:01
un bucle que está todo el rato, mientras la línea 00:02:03
sea diferente de fin 00:02:06
solicitas línea y la escribes 00:02:07
en el fichero 00:02:10
por ejemplo, pues nada 00:02:10
podemos 00:02:13
hacer aquí simplemente un bucle 00:02:16
mientras la línea 00:02:18
no sea igual 00:02:21
a fin 00:02:23
vale, pues entonces la escribimos 00:02:25
en el fichero, ahora veremos 00:02:31
vale, aquí 00:02:32
Y, lógicamente, como nos podíamos esperar, 00:02:34
él nos dice, oye, que podría no estar inicializado, 00:02:37
entonces podríamos inicializarlo aquí a 22. 00:02:41
Esto ya empieza a ser feo. 00:02:48
Entonces, como ya sabemos, 00:02:50
si lo que queremos es darle valor a esto ya desde el principio, 00:02:51
¿vale? 00:02:54
Pues vamos a darle ya, vamos a darle un valor, 00:02:57
a ver si nos lo coge aquí. 00:02:59
Como es con el equals, vamos a, 00:03:01
mientras línea sea línea igual 00:03:03
vamos a leerla 00:03:06
exactamente 00:03:09
vale pues mientras línea 00:03:17
siendo línea que 00:03:26
siendo línea el resultado de leer 00:03:27
una línea 00:03:31
del teclado así ya con esto 00:03:33
no tenemos que inicializar 00:03:35
y toda esta línea 00:03:36
puedo yo ya 00:03:39
a la vez que la he 00:03:41
decirle 00:03:42
sí, puedo. 00:03:44
Magia. No es magia. 00:03:47
Nos podemos ahorrar 00:03:49
código de esta manera. 00:03:50
Esto es la llamada al método 00:03:53
de este objeto. 00:03:54
Este objeto, a la vez que lo usamos, 00:03:56
podemos ya darle un valor. 00:03:59
A la vez que lo estamos usando 00:04:01
en una sentencia de evaluación, donde sea. 00:04:02
Vale, pues si la línea 00:04:05
siendo la que acabo de leer, no es fin, 00:04:06
entonces, ¿qué queremos hacer? 00:04:09
Escribirla en un fichero. 00:04:10
Vale, pues tenemos que tener un flujo asociado a un fichero y para eso, como estamos hablando de texto y de escritura, pues ya no tengo que volver a leerla aquí, ya la tengo leída, aquí me voy a limitar a escribirla. 00:04:12
vale, pues nos hacemos este 00:04:31
flujo, este 00:04:34
constructor de nuevo admite 00:04:40
varias versiones porque está 00:04:43
sobrecargado, ninguna 00:04:44
de ellas es 00:04:46
sin parámetros, entonces 00:04:47
al menos hay que darle el nombre 00:04:50
del fichero en el que vas a escribir o en el que te vas a 00:04:52
conectar, pues este 00:04:54
de aquí 00:04:56
vale, y 00:04:57
aquí ya nos sale lo mismo 00:05:02
primero no está cerrado 00:05:04
y que pasa con esta excepción 00:05:06
pues vamos a propagarla 00:05:08
y que ya el main se las apague 00:05:11
vale 00:05:13
bueno pues que tenemos que hacer con esta línea 00:05:16
tiene un montón de métodos 00:05:23
para hacer cosas relacionadas con la escritura 00:05:25
en ese fichero 00:05:28
FW tiene un montón de métodos 00:05:29
para hacer cosas 00:05:38
entre ellos 00:05:39
write para escribir un carácter a palo seco 00:05:42
escribir un string de golpe 00:05:44
claro, podemos escribir carácter por carácter 00:05:48
o le puedes escribir, le puedes mandar 00:05:50
un string y te manda el string entero 00:05:52
o le pasas un array de char 00:05:54
y te manda el array de char desde 00:05:56
este offset y la cantidad 00:05:58
que tú le digas, tiene varios 00:06:00
o en este caso 00:06:02
le pasas un array de char 00:06:03
y no te los escribe todos, te escribe 00:06:05
desde esta posición 00:06:08
tantos como 00:06:09
vale, si quieres escribir 00:06:11
porciones de un char, pues aquí uno selecciona 00:06:14
el que quiera, en nuestro caso 00:06:16
como queremos escribir toda 00:06:18
la línea que hemos leído de golpe 00:06:20
pues nos viene bien esta, porque lo que 00:06:22
queremos escribir es toda la línea de golpe 00:06:24
que la acabamos de leer, pues esta nos viene bien 00:06:26
pues ya está, escribimos 00:06:28
en el fichero la línea que hemos leído que es diferente de fin 00:06:32
consecutiva, el archivo inicialmente 00:06:34
se ha quedado abierto arriba 00:06:40
entonces cada vez que hace una escritura 00:06:41
ya se queda internamente posicionado 00:06:44
a continuación. 00:06:46
No, no hace un salto de línea. 00:06:49
Se queda posicionado a continuación. 00:06:51
El salto de línea, si quieres tú 00:06:53
meterlo, lo tendrás que meter específicamente. 00:06:54
Entonces, de hecho, 00:06:57
eso es lo que vamos a comprobar ahora. 00:06:58
Yo voy escribiendo las líneas que voy leyendo. 00:07:00
Voy a cerrar el flujo para que se me 00:07:02
quite el aviso y porque siempre 00:07:04
está bien. 00:07:06
Y ya está. 00:07:08
Entonces, vamos a probar este método. 00:07:10
En nuestro main 00:07:16
esto de aquí 00:07:17
comentado 00:07:19
y vamos a escribir fichero 00:07:21
pues cualquier 00:07:25
ficherito, líneas 00:07:27
y ahora me diréis 00:07:29
escribe fichero 00:07:36
no, no me diréis eso 00:07:44
escribe fichero, ah la excepción 00:07:45
porque no, vale, vale 00:07:50
entonces 00:07:52
hala 00:07:55
vale 00:07:58
y ahora me diréis 00:08:00
ahora ya sí, me diréis 00:08:02
pero este fichero 00:08:04
no existe 00:08:06
me lo decís, claro 00:08:07
la particularidad de FWrite 00:08:10
de FWriter es que si el fichero no existe 00:08:12
lo crea, con lo cual 00:08:14
la excepción de file not found exception 00:08:16
no la va a soltar, sin embargo el file 00:08:18
reader tiene que conectarse a un fichero 00:08:20
que sí que exista previamente, porque si no 00:08:22
Existe, te saca el file not found exception. 00:08:24
Tiene sentido por el uso que se le suele dar. 00:08:26
Vale. 00:08:29
El file writer, si no existe, lo crea. 00:08:30
Y ahora me dais la pregunta, ¿y si existe? 00:08:34
Lo sobrescribe. 00:08:36
¿Qué hace? 00:08:37
¿Lo sobrescribe o empieza a escribir a continuación? 00:08:38
A continuación. 00:08:41
Depende. 00:08:42
Porque este constructor de aquí está sobrecargado. 00:08:43
Entonces, le podemos poner un siguiente parámetro, 00:08:47
que es un boolean 00:08:50
que podemos poner true o false 00:08:53
y ese segundo parámetro implica 00:08:54
si voy a añadir 00:08:57
o no, con lo cual lo limpio 00:08:58
si ponemos true 00:09:01
es que vamos a añadir, con lo cual 00:09:02
no lo limpia 00:09:05
y si no ponemos nada, por defecto 00:09:05
creo que es false, pero vamos a comprobarlo 00:09:08
entonces vamos a dejarlo con la opción por defecto 00:09:10
ahora mismo el fichero no existe 00:09:13
luego lo va a crear de nuevas con las líneas que pongamos 00:09:15
y luego vamos a hacer una segunda vez 00:09:17
a ver si lo ha sobrescrito 00:09:19
vale, pues venga 00:09:21
lo ejecutamos 00:09:25
y está ahí esperando 00:09:27
las líneas 00:09:29
pues hola 00:09:30
que tal 00:09:32
fin 00:09:35
ala, ya hemos terminado 00:09:36
no, porque tal y como lo tenemos 00:09:38
ya directamente en el momento de leerlo 00:09:42
cuando comprueba que es fin ya no entra 00:09:44
entonces 00:09:46
refrescamos el proyecto 00:09:48
y al refrescarlo vemos que nos ha aparecido 00:09:51
ahí en la raíz del proyecto 00:09:53
porque no hemos puesto una ruta 00:09:55
si hubiéramos puesto una ruta 00:09:57
nos aparecería en esa ruta 00:09:58
vale, pues líneas 00:10:00
tienen las líneas que le hemos escrito 00:10:03
todas seguidas 00:10:05
pues claro que todas seguidas 00:10:07
porque no hemos puesto ningún salto de línea 00:10:08
no hemos puesto ningún salto de línea 00:10:10
si queremos 00:10:13
que las ponga con salto de línea 00:10:15
pues vamos a concatenar 00:10:17
cada línea 00:10:20
con un 00:10:21
barra n 00:10:23
y el barra r también 00:10:26
vamos a ver 00:10:28
vale, entonces vamos a volver a ejecutarlo 00:10:30
ahora el fichero ya va a existir 00:10:32
vale, vamos a ver 00:10:34
si lo añade a continuación de lo que estaba 00:10:36
con saltos de línea, no? 00:10:39
eso ya 00:10:40
o si lo sobrescribe tal cual 00:10:41
vamos a ejecutarlo 00:10:43
pues se queda esperando 00:10:46
las líneas 00:10:49
fin 00:10:51
¿vale? entonces ahora abrimos el fichero 00:10:56
otra vez, líneas 00:10:59
y ha borrado lo que había 00:11:00
luego 00:11:03
se confirma que por defecto 00:11:04
en este constructor, si no ponemos nada 00:11:07
es como si pusiéramos un false 00:11:09
que significa abre el fichero 00:11:11
y si tenía algo de antes 00:11:13
elimínalo, elimínalo porque 00:11:15
vamos a escribirlo limpio 00:11:17
Si no queremos ese efecto, si no queremos el efecto de elimina el fichero, vamos a escribirlo limpio, cambiamos esto a true, ¿vale? De hecho, si lo volvemos a ejecutar ahora y ponemos otras líneas, fin, pues efectivamente, lo he cerrado, quería abrirlo, efectivamente ahora sí que lo ha añadido. 00:11:18
y como veis el barra N 00:11:46
a la hora de escribirlo 00:11:52
sí que es suficiente para un salto de línea 00:11:54
¿habéis visto? 00:11:56
que yo solamente he concatenado con el barra N 00:12:01
no ha hecho falta el barra R 00:12:04
y sí que le ha sido suficiente al editor para mostrarlo 00:12:06
vale, pero aquí no os volváis locos 00:12:10
son particularidades del editor de texto 00:12:13
que lo abre uno con el WordPad o el blog de notas 00:12:15
a lo mejor lo ve seguido 00:12:19
Que lo abre uno con este 00:12:20
Son particularidades del editor de texto 00:12:22
¿Vale? 00:12:25
Luego, al editor de texto 00:12:29
De Java 00:12:31
Le vale con que le pongas esto 00:12:34
Para mostrártelo él 00:12:36
Como en otra línea 00:12:38
Pero puede que haya otros editores de texto para los que no 00:12:40
Y tengas que poner los dos 00:12:43
Entonces, eso son particularidades 00:12:44
No, vamos, lo importante es 00:12:45
lo importante es entender un poquito 00:12:47
de qué va el rollo, nada más. 00:12:52
Vale. 00:12:54
Vamos a empezar. 00:12:58
Bueno, entonces, 00:12:59
y describir en un fichero, 00:13:02
poco más hay que saber. 00:13:08
¿True es para añadir? 00:13:09
Y false, o no poner nada, 00:13:12
que es la opción por defecto, 00:13:14
es para que lo limpie. 00:13:15
en el caso de que exista lo limpia y empieza de cero 00:13:16
vale 00:13:18
pues esto es lo básico, básico, básico 00:13:19
para escribir y leer de ficheros de texto 00:13:22
y con esto ya podemos hacer 00:13:24
pues muchas cosas 00:13:26
por ejemplo, ahora vamos a hacer 00:13:28
con nuestro builder 00:13:30
un editor de texto nuestro propio 00:13:31
con nuestro builder 00:13:34
o si alguien quiere con JavaFX porque es más bonito 00:13:36
como lo que nos importa es el back 00:13:39
lo que hay detrás nos da lo mismo 00:13:40
vale, pues a ver 00:13:42
voy a localizar primero 00:13:43
el editor 00:13:45
Materias:
Programación
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado superior
      • Primer Curso
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
17
Fecha:
2 de abril de 2025 - 12:24
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
13′ 48″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
54.00 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid