Java -
Exceptions &
File Handling
BYTE
InputStream
FilterInputStream DataInputStream
🔧 Clase abstracta base 🛠️ Clase decoradora: 📦 Lee datos primitivos
para leer bytes (no se usa
mejora funcionalidades de (int, float, boolean...) desde
sola).
otras (Buffered, Data...). bytes.
📎 Otras clases heredan de Normalmente no se usa sola. Muy útil cuando sabes el
ella.
tipo de dato que vas a leer.
BufferedInputStream
FileInputStream ObjectInputStream
📂 Lee bytes directamente 🚀 Lee datos más rápido, 🧠 Lee objetos completos
usando un búfer (memoria
desde un archivo. desde un archivo (si antes
intermedia). Para archivos
fueron serializados).
🧠 Sirve para leer datos grandes.
binarios como imágenes,
vídeos o cualquier archivo.
🧪 Se usa junto con Para usarlo, el objeto debe
implementar Serializable.
FileInputStream.
OutputStream
FilterOutputStream
💾 Clase base para DataOutputStream
escribir bytes. 🔧 Clase base para filtros
de escritura como 📦 Escribe datos
📎 Otras clases heredan de BufferedOutputStream y primitivos (int, float, etc.).
ella. DataOutputStream.
ObjectOutputStream
FileOutputStream BufferedOutputStream
🧠 Escribe objetos enteros
📂 Escribe bytes 🚀 Escribe más rápido a archivos.
directamente en un usando memoria
archivo. intermedia. Para usarlo, el objeto debe
implementar Serializable.
CARACTER
Reader InputStreamReader
📖 Clase base para leer 🔄 Convierte bytes en
caracteres. caracteres.
📎 Otras clases heredan de Se usa, por ejemplo, para
ella. leer desde consola
([Link]).
BufferedReader
FileReader
🚀 Lee texto más rápido, y
📂 Lee texto (caracteres) permite usar .readLine(),
para leer una línea
desde un archivo .txt.
completa de texto de un
archivo
InputStreamReader
Writer
🔄 Convierte bytes en
✍️ Clase base para caracteres.
escribir texto.
Se usa, por ejemplo, para
leer desde consola
([Link]).
BufferedWriter
FileWriter
🚀 Escribe más rápido y
📂 Escribe caracteres en permite métodos útiles
como .newLine(), para
un archivo.
escribir un salto de línea
(\n) en el archivo
🧠 ¿Qué es Serializable?
Serializable es una interfaz vacía (sin métodos) que le dice a Java:
“Este objeto puede ser convertido a bytes para poder guardarse o
enviarse.”
⚠️ Si NO implementas Serializable...
Te dará un error en tiempo de ejecución:
[Link]: Persona
✅ RESUMEN CLARO
Situación ¿Necesita Serializable?
Leer o escribir un objeto con ObjectOutputStream / ObjectInputStream ✅ SÍ
Leer o escribir texto o bytes (sin objetos) ❌ NO
Usar listas, mapas, etc. que contienen objetos ✅ SÍ, si guardas esas listas
Lectura genérica de archivos (BufferedReader, FileReader, etc.) ❌ NO
BINARIO
📥 ¿Y si quieres guardar una lista de objetos?
JSON
[Link]:gson:2.13.1
🧠 ¿Y si es una lista de objetos?