Lectura y Escritura de Ficheros CSV con Java

Los ficheros CSV (Comma-Separated Values) son una forma popular de almacenar datos tabulares en texto plano, donde los valores se separan por comas (o un delimitador similar). Java ofrece varias formas de manejar ficheros CSV, desde métodos básicos hasta el uso de librerías especializadas como OpenCSV.

En este artículo, exploraremos cómo leer y escribir ficheros CSV simples y complejos, abordando ambos enfoques: con y sin librerías externas.


¿Qué es un Fichero CSV?

Un fichero CSV es un fichero de texto en el que los datos se organizan en filas y columnas, separados por un delimitador (generalmente una coma). Por ejemplo:

Nombre,Edad,País
Juan,25,España
Maria,30,México
  • Fila: Cada línea del fichero representa una fila de la tabla.
  • Columna: Cada valor separado por el delimitador corresponde a una columna.

Lectura y Escritura de Ficheros CSV Simples (Sin Librerías)

Lectura de un Fichero CSV

Usando clases como BufferedReader y el método split() de la clase String, podemos leer un fichero línea por línea y dividir los valores en columnas.

Ejemplo:

import java.io.*;

public class LeerCSV {
    public static void main(String[] args) {
        String rutaFichero = "datos.csv";
        String separador = ",";

        try (BufferedReader br = new BufferedReader(new FileReader(rutaFichero))) {
            String linea;
            while ((linea = br.readLine()) != null) {
                String[] columnas = linea.split(separador);
                System.out.println("Nombre: " + columnas[0] + ", Edad: " + columnas[1] + ", País: " + columnas[2]);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Escritura en un Fichero CSV

Para escribir datos en un fichero CSV, podemos usar BufferedWriter y formatear las líneas con los valores separados por el delimitador.

Ejemplo:

import java.io.*;

public class EscribirCSV {
    public static void main(String[] args) {
        String rutaFichero = "datos.csv";
        try (BufferedWriter bw = new BufferedWriter(new FileWriter(rutaFichero))) {
            bw.write("Nombre,Edad,País");
            bw.newLine();
            bw.write("Juan,25,España");
            bw.newLine();
            bw.write("Maria,30,México");
            System.out.println("Fichero CSV escrito correctamente.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Manejo de Ficheros CSV Complejos

Los ficheros CSV más avanzados pueden tener:

  • Valores que contienen el delimitador (p. ej., una coma dentro de una celda).
  • Valores que incluyen comillas dobles (") o saltos de línea.

Para manejar estos casos, las soluciones básicas pueden no ser suficientes. Aquí es donde las librerías externas, como OpenCSV, son útiles.


Lectura y Escritura de Ficheros CSV con OpenCSV

Configuración de OpenCSV

Si usas Maven, agrega la siguiente dependencia en tu archivo pom.xml:

<dependency>
    <groupId>com.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>5.7.1</version>
</dependency>

Lectura de un Fichero CSV con OpenCSV

OpenCSV simplifica el proceso, manejando automáticamente delimitadores y comillas.

Ejemplo:

import com.opencsv.CSVReader;
import java.io.*;

public class LeerCSVOpenCSV {
    public static void main(String[] args) {
        String rutaFichero = "datos.csv";
        try (CSVReader reader = new CSVReader(new FileReader(rutaFichero))) {
            String[] linea;
            while ((linea = reader.readNext()) != null) {
                System.out.println("Nombre: " + linea[0] + ", Edad: " + linea[1] + ", País: " + linea[2]);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Escritura en un Fichero CSV con OpenCSV

Con OpenCSV, escribir datos en un fichero CSV es igualmente sencillo.

Ejemplo:

import com.opencsv.CSVWriter;
import java.io.*;

public class EscribirCSVOpenCSV {
    public static void main(String[] args) {
        String rutaFichero = "datos.csv";
        try (CSVWriter writer = new CSVWriter(new FileWriter(rutaFichero))) {
            // Escribir encabezado
            writer.writeNext(new String[]{"Nombre", "Edad", "País"});
            // Escribir datos
            writer.writeNext(new String[]{"Juan", "25", "España"});
            writer.writeNext(new String[]{"Maria", "30", "México"});
            System.out.println("Fichero CSV escrito correctamente.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Comparativa: Métodos Básicos vs OpenCSV

CaracterísticasMétodos BásicosOpenCSV
Facilidad de usoMediaAlta
Manejo de delimitadoresRequiere programación manualAutomático
Soporte para comillasRequiere lógica adicionalSoporte integrado
Compatibilidad con MavenNo necesariaDependencia Maven requerida

Consejos para Manejar Ficheros CSV

  1. Elegir el método adecuado: Usa métodos básicos para ficheros simples y OpenCSV para casos complejos.
  2. Gestionar excepciones: Maneja cuidadosamente IOException para garantizar la estabilidad del programa.
  3. Validar datos: Antes de procesar un fichero CSV, verifica que el formato sea el esperado.
  4. Codificación: Asegúrate de usar la codificación adecuada (UTF-8) para evitar problemas con caracteres especiales.

Conclusión

La lectura y escritura de ficheros CSV es una tarea común en la programación, y Java ofrece varias herramientas para abordarla. Los métodos básicos son ideales para casos simples, mientras que librerías como OpenCSV son esenciales para manejar ficheros más complejos de manera eficiente. Con las técnicas y ejemplos proporcionados aquí, estarás listo para trabajar con ficheros CSV en tus proyectos. ¡Ponte manos a la obra!

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde Tomás González: Formador y Desarrollador Web

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad