20250327 Ficheros_3 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
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
FW
00:05:20
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
o
00:09:20
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
00:12:31
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