Curso Java #39 - BufferedReader y BufferedWriter

DiscoDurodeRoer
3 Jan 201808:28

Summary

TLDREn este vídeo de 'Disco duro de roer', se continúa el curso de Java con un enfoque en el tema de BufferedWriter y BufferedReader. Se explica cómo estos objetos mejoran la lectura y escritura de archivos en comparación con FileReader y FileWriter. Se muestra cómo leer línea a línea y se abordan técnicas para reducir código. También se destaca la importancia de crear un FileReader antes de instanciar un BufferedReader y se menciona cómo escribir de forma reactiva o añadir texto sin sobrescribir en los archivos.

Takeaways

  • 💾 El vídeo trata sobre el uso de `BufferedWriter` y `BufferedReader` en Java, que son mejoras sobre `FileWriter` y `FileReader`.
  • 📚 Se menciona que `BufferedReader` permite leer línea por línea, lo cual es conveniente para archivos grandes.
  • 🔍 Se explica que el uso de `BufferedReader` es similar al de `FileReader`, pero con la capacidad de manejar saltos de línea.
  • 📝 Se destaca la importancia de usar `System.out.println` para recargar el archivo y poder leerlo.
  • 🔄 Se aborda la diferencia entre leer con un bucle tradicional y una forma más eficiente utilizando `linea != null`.
  • 📖 Se sugiere una técnica para reducir líneas de código utilizando `linea = br.readLine()` directamente en un if.
  • 🗂️ Se indica que para crear un `BufferedReader` se necesita un `FileReader`, lo cual es crucial para su funcionamiento.
  • 📝 Se explica cómo se puede escribir en un archivo de manera reactiva usando `BufferedWriter` y cómo se puede agregar texto sin sobrescribirlo.
  • 🔧 Se menciona que el orden de creación y lectura de archivos es importante y que el archivo debe existir antes de intentar leerlo con `BufferedReader`.
  • 🔎 Se recomienda revisar el resto del curso para obtener más información sobre la manipulación de archivos en Java.

Q & A

  • ¿Qué es un `BufferedWriter` y un `BufferedReader` en Java?

    -Son clases que mejoran las funcionalidades de `FileWriter` y `FileReader`. Permiten leer y escribir datos más eficientemente, ya que trabajan con buffers, lo que facilita el procesamiento de líneas completas en lugar de caracteres individuales.

  • ¿Cuál es la ventaja de usar `BufferedReader` sobre `FileReader`?

    -La principal ventaja es que `BufferedReader` permite leer datos línea por línea, lo que es más eficiente cuando se trata de ficheros grandes, en lugar de leer carácter por carácter como lo hace `FileReader`.

  • ¿Cómo se usa el método `readLine()` en `BufferedReader`?

    -El método `readLine()` permite leer una línea completa de un fichero. Se usa dentro de un bucle que continúa leyendo hasta que el método devuelve `null`, lo que indica que no hay más líneas por leer.

  • ¿Cuál es la diferencia entre `BufferedWriter` y `FileWriter` al escribir en un fichero?

    -`BufferedWriter` es una versión mejorada de `FileWriter` ya que permite escribir de forma más eficiente, almacenando temporalmente los datos en un buffer antes de escribirlos en el fichero. También permite usar métodos como `newLine()` para agregar saltos de línea.

  • ¿Qué hace el método `newLine()` en `BufferedWriter`?

    -El método `newLine()` inserta un salto de línea en el fichero, lo cual es útil cuando se desea escribir datos en varias líneas separadas.

  • ¿Por qué es importante crear el fichero antes de intentar leerlo?

    -Si intentas leer un fichero que no existe, Java lanzará un error. Por eso, es recomendable asegurarse de que el fichero haya sido creado antes de intentar leerlo con `BufferedReader`.

  • ¿Cómo se puede evitar sobrescribir los datos al usar `FileWriter`?

    -Para evitar sobrescribir datos en un fichero, se puede pasar `true` como segundo argumento en el constructor de `FileWriter`. Esto activará el modo 'append', que permite agregar nuevos datos al final del fichero en lugar de reemplazar los existentes.

  • ¿Cómo se puede simplificar el bucle de lectura con `BufferedReader`?

    -Una forma de simplificar el bucle es colocando la llamada a `readLine()` dentro de la condición del bucle. Esto permite que la línea sea leída y asignada en un solo paso, evitando tener que repetir la llamada a `readLine()` dentro del cuerpo del bucle.

  • ¿Por qué es útil usar buffers al leer y escribir ficheros en Java?

    -El uso de buffers reduce la cantidad de operaciones de E/S que realiza el programa, lo que aumenta la eficiencia al manejar grandes volúmenes de datos. Los buffers almacenan temporalmente los datos antes de procesarlos, lo que mejora el rendimiento.

  • ¿Cómo afecta el uso de `BufferedReader` y `BufferedWriter` el rendimiento en comparación con `FileReader` y `FileWriter`?

    -El uso de `BufferedReader` y `BufferedWriter` mejora significativamente el rendimiento cuando se manejan grandes cantidades de datos, ya que reduce el número de accesos al sistema de archivos, almacenando temporalmente los datos en la memoria antes de leerlos o escribirlos.

Outlines

00:00

📖 Introducción al Buffer Writer y Buffer Reader

Este primer párrafo presenta los temas que se van a tratar en el vídeo, enfocados en el estudio de las clases Buffer Writer y Buffer Reader en Java. Se menciona que estas clases son una mejora sobre las funcionalidades básicas de FileReader y FileReader, permitiendo la lectura de líneas completas en lugar de solo caracteres individuales. Se sugiere que, para archivos grandes, estas clases son más convenientes. Además, se hace una breve referencia a la forma en que se abordará el tema, utilizando ejemplos del curso y se destaca la importancia de las líneas de código que permiten la lectura de líneas de texto, utilizando `BufferedReader` y `BufferedWriter`. Se menciona también un truco para reducir líneas de código utilizando `System.lineSeparator()` en lugar de hardcoding el carácter de nueva línea.

05:00

🔍 Detalles de Implementación y Consideraciones

En el segundo párrafo, se profundiza en la implementación de las clases `BufferedReader` y `BufferedWriter`, comparándolas con sus contrapartes `FileReader` y `FileWriter`. Se destaca la importancia de crear un `FileReader` antes de instanciar un `BufferedReader`, y se explica cómo se puede agregar texto a un archivo existente sin sobrescribirlo, utilizando el modo de append. Se menciona la secuencia correcta de creación de objetos, insistiendo en la necesidad de crear el archivo antes de intentar leerlo con `BufferedReader`. Finalmente, se hace una mención de una prueba que se realizará para demostrar el funcionamiento de estas clases, y se invita al espectador a seguir el curso para obtener más información y a dejar sus dudas en los comentarios.

Mindmap

Keywords

💡BufferWriter

El BufferWriter es una clase en Java que se utiliza para escribir texto de manera eficiente en un flujo de salida (output stream). A diferencia de FileWriter, que escribe carácter por carácter, BufferWriter acumula los caracteres en un buffer antes de escribirlos, lo que mejora el rendimiento. En el video, se explica cómo usar BufferWriter para escribir líneas completas en lugar de caracteres individuales, lo que resulta útil en archivos grandes.

💡BufferReader

El BufferReader es la contraparte de BufferWriter para leer archivos de texto. Esta clase permite leer datos de un archivo de manera más eficiente, línea por línea, en lugar de carácter por carácter como lo hace FileReader. En el video, se menciona que BufferReader es ideal cuando se necesita procesar archivos de gran tamaño porque reduce la complejidad al leer de una línea a la vez.

💡FileWriter

FileWriter es una clase básica de Java que se usa para escribir datos de texto en un archivo, carácter por carácter. En el video, se menciona que BufferWriter es una mejora sobre FileWriter, ya que ofrece una manera más eficiente de escribir datos en un archivo al usar un buffer intermedio.

💡FileReader

FileReader es una clase en Java utilizada para leer datos de texto de un archivo, carácter por carácter. En el video, se destaca que BufferReader mejora este proceso al permitir la lectura de líneas completas, lo cual es especialmente útil en archivos grandes.

💡Salto de línea

El salto de línea es un concepto importante cuando se trabaja con archivos de texto. En el video, se menciona cómo con BufferWriter no es necesario insertar manualmente el carácter de salto de línea '\n', ya que se puede usar el método `newLine()` para añadir un salto de línea de manera más eficiente. Esto mejora la legibilidad del código y facilita la escritura de múltiples líneas de texto en un archivo.

💡EOF (End of File)

EOF o 'End of File' es una condición que se alcanza cuando no hay más datos que leer de un archivo. En el video, se menciona que BufferReader devuelve `null` cuando llega al final de un archivo, lo que indica que no hay más líneas por procesar. Este concepto es fundamental para controlar los bucles de lectura de archivos en Java.

💡Optimización

En el contexto del video, optimización se refiere al uso de clases como BufferWriter y BufferReader para mejorar la eficiencia del proceso de lectura y escritura de archivos en comparación con sus versiones básicas (FileWriter y FileReader). Se menciona que estas clases utilizan un buffer para reducir la cantidad de interacciones directas con el disco, lo que resulta en un mejor rendimiento.

💡Append (Añadir)

Append o añadir es la capacidad de agregar texto a un archivo sin sobrescribir el contenido existente. En el video, se explica cómo, usando FileWriter en modo 'append' (con el parámetro `true`), se puede continuar añadiendo texto al final de un archivo, en lugar de sobrescribir su contenido anterior.

💡Eficiencia

La eficiencia es un tema recurrente en el video, ya que se enfoca en cómo BufferReader y BufferWriter mejoran el rendimiento al manejar archivos de texto grandes. La eficiencia se logra al reducir el número de operaciones de E/S (Entrada/Salida) al utilizar buffers, lo que permite leer o escribir grandes cantidades de datos en bloque en lugar de carácter por carácter.

💡Error handling (Manejo de errores)

El manejo de errores es una parte importante cuando se trabaja con lectura y escritura de archivos en Java. En el video, se menciona que, si se intenta leer un archivo que no existe con BufferWriter, se producirá un error. Esto resalta la importancia de manejar adecuadamente las excepciones (por ejemplo, con bloques `try-catch`) para evitar que el programa falle inesperadamente.

Highlights

Introducción al tema del BufferedWriter y BufferedReader.

Comparación con FileReader y FileWriter.

Ventajas de BufferedReader para leer línea a línea.

Ejemplo práctico de cómo usar BufferedReader.

Diferenciación entre FileWriter y BufferedWriter.

Cómo se usa BufferedReader para leer líneas de un archivo.

Importancia de usar el método readLine() en BufferedReader.

Diferenciación entre leer con y sin BufferedReader.

Cómo se utiliza el método newLine en BufferedWriter.

Ejemplo de cómo escribir en un archivo utilizando BufferedWriter.

Método para asegurar que el contenido se escriba en el archivo.

Forma alternativa de leer líneas para reducir código.

Uso de la sentencia 'tan distinto de no' para leer líneas.

Importancia de crear un FileReader antes de usar BufferedReader.

Cómo se crea un objeto FileReader.

Modo de escribir de forma reactiva en un archivo.

Diferenciación entre escribir y anexar en FileWriter.

Importancia del orden de creación y lectura de archivos.

Ejemplo de prueba para mostrar cómo funciona el append en FileWriter.

Recursos adicionales en el curso para aprender más sobre archivos.

Invitación a dejar preguntas en la caja de comentarios.

Conclusión del vídeo y anuncio del próximo vídeo.

Transcripts

play00:03

[Música]

play00:10

todos bienvenidos un nuevo vídeo de

play00:12

disco duro de roer hoy vamos a seguir

play00:16

con el curso de java y hoy vamos a ver

play00:18

el tema del buffer writer y el buffer

play00:21

ereader ya vimos el fin la ryder y

play00:23

feller rate bien el buffer reiter y

play00:27

buffett reader digamos que son como una

play00:30

mejora de estos dos del filial river y

play00:33

el file rate que son como lo básico bien

play00:36

dijimos que con el file líder podíamos

play00:40

leer carácter la carácter

play00:42

pero con el buffer slider podemos leer

play00:45

de línea en línea algo que pues si es un

play00:50

fichero bastante grande pues nos va a

play00:53

ser mucho más cómodo entonces vamos a

play00:57

verlo

play00:59

bien voy a copiar aquí lo que tenemos

play01:02

del curso fijaos vamos a hacer con la

play01:04

última forma que vimos que es la d

play01:10

la d

play01:13

la segunda forma que vimos de recordarlo

play01:16

en el último vídeo

play01:19

a veces importa se ha importado todo

play01:22

pero está acabado

play01:23

está en vino y también tonto nos volvió

play01:25

pasa pero no pasa nada si no no me

play01:29

dejaría

play01:30

mientras no salga el icono rojo no pasa

play01:33

nada bien

play01:35

y vamos a poner esto así para que se vea

play01:39

un pelín mejor

play01:41

aquí bien

play01:45

qué es lo que vamos a ver hoy vamos a

play01:46

ver cómo funcionan estas dos clases

play01:49

básicamente funciona prácticamente igual

play01:53

solo que tenemos que tener en cuenta que

play01:55

ahora podemos leer líneas

play01:58

fijaos que este ejemplo es exactamente

play02:01

igual que el que vimos simplemente estoy

play02:05

con el buffet líder pero sí con el

play02:08

buffet de reiter es que siendo un

play02:10

verdadero siendo el buffet de reiter lo

play02:13

que hago es inscribir el raid es

play02:15

prácticamente igual que pedimos

play02:17

exactamente solo que recordáis que os

play02:21

dije lo de barra

play02:24

n aquí no hace falta porque le podemos

play02:26

poner eso de punto new line

play02:29

digamos que eso es un salto de línea

play02:30

entonces y luego puedo seguir

play02:33

escribiendo

play02:34

básicamente luego lo del plus que

play02:38

recordar que eso es para que recargue el

play02:40

fichero y lo pueda leer y fijaos fijaos

play02:43

que como es la nueva forma de leer

play02:46

fijaos que es muy parecido sólo que

play02:48

usando un stream fijaos string línea

play02:52

igual a ver punto real line línea

play02:55

distinto de nulo en vez de de menos uno

play03:00

recordar aquí es al revés como cuál es

play03:02

el digamos cuando ya no hay más pues

play03:05

cuando devuelven un digamos que voy

play03:07

leyendo línea línea y cuando ya no haya

play03:09

más líneas de volume no eso es un poco

play03:11

de idea también os voy a enseñar porque

play03:14

creo que yo soy ya estaba aquí pero voy

play03:16

a comentar otra forma de hacerlo para

play03:20

reducir líneas

play03:21

fijaos

play03:25

hay un truco muy bueno que es hacer esto

play03:28

fijaos

play03:29

y es sin lugar a ver punto tan distinto

play03:33

de no

play03:35

si yo pongo

play03:39

si yo pongo esto

play03:43

es lo mismo que quitar esto

play03:48

fijaos es una forma que la quiero poner

play03:52

porque quizá la liberal la veáis en

play03:55

algún sitio y entonces pues oye que si

play03:57

la veis en algún sitio que veáis que no

play03:59

está mal es otra forma digamos para

play04:01

hacerlo más rápido para los de que

play04:03

tienen que primero y luego tener

play04:07

qué

play04:09

digamos al final del bucle del cual todo

play04:11

lo que sea no tener que poner otra vez

play04:14

del real line digamos que sos cómo

play04:16

hacerlo automáticamente qué es lo que

play04:18

está haciendo línea es igual a br punto

play04:20

real line aquí no es real

play04:23

efe line lo lee y digamos que mete el

play04:26

valor en línea como está entre

play04:29

paréntesis muy importante en caso de que

play04:33

de mal o que de nul va a devolver el

play04:36

valor y digamos que va a ser como

play04:38

digamos sino bien si eso diera una línea

play04:42

va a ser nulo y lo que hay entre

play04:43

paréntesis todos bien uno

play04:45

entonces terminaría y se va guardando

play04:48

mal es una es una forma la forma que

play04:51

había al principio es totalmente válida

play04:53

esta también son distintas formas vale

play04:56

entonces básicamente esto es un poco la

play05:00

diferencia que tiene

play05:02

el buje the reader con el original una

play05:05

cosa también importante que no he dicho

play05:06

es que a la hora de crearlo necesitamos

play05:11

necesitamos un file river

play05:15

vale eso es muy importante a la hora de

play05:17

crear

play05:19

fijaos ni un filler líder y ya

play05:22

la ruta del fichero podéis también no

play05:26

hace falta hacerlo de esta forma podéis

play05:27

crear un objeto como hemos hecho al

play05:29

principio en el anterior vídeo de joseph

play05:32

y leer file reader fw igual any un file

play05:37

rey del fichero 1

play05:39

si hacéis eso y le pasáis al new buffer

play05:42

el river es el fw camino vale entendéis

play05:47

es decir lo único que necesita el poder

play05:49

es un file river que es lo básico y el

play05:52

digamos que la optimista esa es un poco

play05:55

la idea y con el file reiter igual

play05:57

recordad que esto ya lo vimos en el

play05:59

anterior vídeo también que si queréis

play06:02

queréis que

play06:05

que a la hora de escribir sobre no son

play06:10

reactivas sino que s

play06:12

que se añade el texto aquí lo podéis

play06:15

hacer de la misma manera conmigo por

play06:17

aquí o en el otro

play06:20

dentro del file reiter recordad que eso

play06:23

ya lo vimos también

play06:25

dentro del filler reiter simplemente le

play06:28

ponemos como true

play06:30

y tirando y eso quiere decir que cuando

play06:32

por ejemplo hola mundo y en la próxima

play06:34

integración la próxima ejecución le

play06:37

pongo qué tal va a salir en el fichero

play06:39

hola mundo qué tal

play06:42

porque es la idea a veces solo queremos

play06:43

añadir no queremos machacar todo

play06:47

por último también una cosilla

play06:49

importante que no lo he comentado y es

play06:51

que el orden aquí es importante tenemos

play06:55

que crear antes el fichero que después

play06:58

es decir si tú vas a leer un fichero que

play07:02

no existe antes de haberse creado con el

play07:05

buffet del rey

play07:05

ryder pues te va a dar error al esto es

play07:08

una cosa que teníamos que lo vamos a

play07:09

cambiar no os preocupéis

play07:11

entonces siempre es bueno eso siempre el

play07:13

primero que te van a escribir y luego el

play07:16

tema de leer siempre y cuando sepa es

play07:18

que ese fichero puede no existir vale y

play07:20

como último que no lo había dicho vamos

play07:24

a ver la prueba como veis de esto es una

play07:26

prueba buscar nueva fe let's seguir

play07:28

mostrando más fele y vamos a hacer la

play07:31

prueba de mostrando con lo del true

play07:35

y eso es

play07:39

vale y lo vemos fijaos veis que se

play07:43

repite porque le está diciendo vale pues

play07:45

una llana melo al final y lo que está

play07:49

haciendo añadirlo al final

play07:54

bien pues esto es lo que hay de momento

play07:58

de ficheros recordar recordar que en el

play08:02

curso lo tenéis todo tenemos vídeos de

play08:05

esto de ficheros sobre todo yo os

play08:09

recomiendo que le echéis un vistazo voy

play08:11

a dejar la descripción los ejercicios y

play08:13

nos vemos en el próximo vídeo recordad

play08:15

que si tenéis dudas en la caja de

play08:17

comentarios así que nos vemos el próximo

play08:19

adiós

play08:21

[Música]

play08:26

e

Rate This

5.0 / 5 (0 votes)

الوسوم ذات الصلة
JavaProgramaciónBufferedWriterBufferedReaderArchivosCursoTécnicasOptimizaciónLeerEscribir
هل تحتاج إلى تلخيص باللغة الإنجليزية؟