Visión general de Java I/O Streams

Importación de datos en Java

Anthony Markham

VP Quant Developer

Fundamentos de Streams

  • Streams son canales unidireccionales de datos con orden FIFO (First In, First Out)
  • Byte streams trabajan con datos binarios (InputStream/OutputStream)
  • Character streams manejan texto con codificación automática (Reader/Writer)

Representación de Streams

Importación de datos en Java

Byte Streams

  • Usado para datos binarios (imágenes, audio, etc.)
  • Clases abstractas base: InputStream (lectura), OutputStream (escritura)
  • Implementaciones clave: FileInputStream, FileOutputStream
  • Métodos clave: read() devuelve bytes, write() escribe bytes

Archivos binarios: imágenes y audios

Importación de datos en Java

Byte Streams

try (FileInputStream fis = new FileInputStream("data.bin")) {

byte[] buffer = new byte[1024]; int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) { // Procesar bytes en buffer
System.out.println("Leídos " + bytesRead + " bytes"); }
} catch (Exception e) { System.err.println("Error: " + e.getMessage()); }
Importación de datos en Java

Character Streams

  • Diseñado específicamente para datos de texto
  • Clases abstractas base: Reader (lectura de texto), Writer (escritura de texto)
  • Implementaciones clave: FileReader, FileWriter, BufferedReader, BufferedWriter
  • Métodos convenientes: readLine() lee una línea completa de texto

Archivos CSV

Importación de datos en Java

Character Streams

try (BufferedReader reader = new BufferedReader(new FileReader("data.csv"))) {
    String line;

while ((line = reader.readLine()) != null) { // Procesar cada línea System.out.println(line); }
} catch (Exception e) { System.err.println("Error: " + e.getMessage()); }
Importación de datos en Java

Buffered Streams - rendimiento

  • Mejora el rendimiento al reducir operaciones de disco
  • Leer/escribir byte streams con BufferedInputStream y BufferedOutputStream
  • Leer/escribir character streams con BufferedReader, BufferedWriter
    • Leer una línea completa con readLine()
Importación de datos en Java

Buffered Streams - rendimiento

try (BufferedReader reader = new BufferedReader(new FileReader("data.csv"))) {
    // Procesamiento del encabezado
    String header = reader.readLine();
    System.out.println("Encabezado: " + header);

// Lectura eficiente de datos String line; int count = 0; while ((line = reader.readLine()) != null) { count++; } System.out.println("Leídas " + count + " filas de datos"); } catch (Exception e) { System.out.println("Error: " + e.getMessage()); }
Importación de datos en Java

Encadenamiento de Streams

  • Cada stream en la cadena añade funcionalidad específica
  • Patrón común: FileInputStream -> InputStreamReader -> BufferedReader
  • Siempre cierra el stream más externo (los demás se cierran automáticamente)
Importación de datos en Java

Encadenamiento de Streams

import java.nio.charset.StandardCharsets;
try (

BufferedReader reader = new BufferedReader(
new InputStreamReader(
new FileInputStream("data.csv"),
StandardCharsets.UTF_8 )
)
) { String line; while ((line = reader.readLine()) != null) { System.out.println(line);} } catch (Exception e) { System.err.println("Error: " + e.getMessage()); }
Importación de datos en Java

Manejo de excepciones

  • Crucial para operaciones I/O
  • Excepciones comunes: IOException, FileNotFoundException
  • Usa siempre try-with-resources para manejar excepciones
Importación de datos en Java

Manejo de excepciones

import java.util.ArrayList;
import java.util.List;
public static List<String> readLines(String filePath) throws IOException {

List<String> lines = new ArrayList<>(); try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) { String line; while ((line = reader.readLine()) != null) { lines.add(line); } } // Stream se cierra automáticamente aquí return lines;
}
Importación de datos en Java

¡Vamos a practicar!

Importación de datos en Java

Preparing Video For Download...