Manejo de Ficheros CSV en Java

Introducción

Los archivos CSV (Comma Separated Values) son un formato común para almacenar datos en texto plano, donde cada línea representa un registro y los valores de los campos están separados por comas. Este formato es ampliamente utilizado debido a su simplicidad y compatibilidad con muchas aplicaciones. En este artículo explicaremos cómo trabajar con ficheros CSV en Java, leyendo y escribiendo datos, tanto de manera manual como utilizando librerías como OpenCSV para manejar casos más complejos.

Lectura de un archivo CSV simple

Un archivo CSV simple no contiene comillas ni caracteres especiales que puedan interferir con los separadores. Para leer este tipo de archivos en Java, podemos utilizar la clase BufferedReader en conjunto con FileReader, y dividir las líneas en valores individuales utilizando el método split() de la clase String.

Ejemplo 1: Leer un archivo CSV simple

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

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

        try (BufferedReader br = new BufferedReader(new FileReader(archivoCSV))) {
            while ((linea = br.readLine()) != null) {
                String[] valores = linea.split(separador);
                for (String valor : valores) {
                    System.out.print(valor + " ");
                }
                System.out.println();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Explicación del código:

  • BufferedReader se utiliza para leer el archivo línea por línea.
  • split(separador) divide la línea en valores separados por comas.
  • Los valores se imprimen en la consola en formato de lista.

Lectura de un archivo CSV con valores entrecomillados

En un archivo CSV más complejo, los valores pueden contener comas o comillas. Para lidiar con estos casos, se utiliza un formato donde los valores están entrecomillados, y cualquier comilla dentro del valor se representa con comillas dobles.

El siguiente código muestra cómo procesar este tipo de archivos utilizando expresiones regulares para eliminar las comillas.

Ejemplo 2: Quitar comillas de valores en un archivo CSV

public class ProcesarCSV {
    public static String[] quitarComillas(String[] valores) {
        String[] resultados = new String[valores.length];
        for (int i = 0; i < valores.length; i++) {
            resultados[i] = valores[i].replaceAll("^\"|\"$", "");
        }
        return resultados;
    }
}

Explicación del código:

  • El método replaceAll("^\"|\"$", "") elimina las comillas al principio y al final de cada valor utilizando expresiones regulares.
  • El array de String procesado es devuelto con los valores sin comillas.

Lectura y escritura de un archivo CSV complejo usando OpenCSV

Cuando trabajamos con archivos CSV más complicados, como aquellos que contienen comas y comillas dentro de los valores, se recomienda usar una librería especializada como OpenCSV. Esta librería simplifica el proceso de lectura y escritura de CSV, gestionando automáticamente los separadores y las comillas.

Para usar OpenCSV, primero debemos incluir la dependencia en el proyecto:

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

Ejemplo 3: Leer un archivo CSV usando OpenCSV

import com.opencsv.CSVReader;
import java.io.FileReader;
import java.io.IOException;

public class LeerCSVConOpenCSV {
    public static void main(String[] args) {
        String archivoCSV = "datos_complejos.csv";

        try (CSVReader csvReader = new CSVReader(new FileReader(archivoCSV))) {
            String[] valores;
            while ((valores = csvReader.readNext()) != null) {
                for (String valor : valores) {
                    System.out.print(valor + " ");
                }
                System.out.println();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Explicación del código:

  • OpenCSV se encarga de manejar automáticamente los valores entrecomillados y las comas dentro de los valores.
  • El método readNext() devuelve un array de String con los valores de cada línea.

Ejemplo 4: Escribir un archivo CSV usando OpenCSV

import com.opencsv.CSVWriter;
import java.io.FileWriter;
import java.io.IOException;

public class EscribirCSVConOpenCSV {
    public static void main(String[] args) {
        String archivoCSV = "datos_salida.csv";
        try (CSVWriter csvWriter = new CSVWriter(new FileWriter(archivoCSV))) {
            String[] encabezado = { "Nombre", "Edad", "Ciudad" };
            String[] datos1 = { "Juan", "30", "Madrid" };
            String[] datos2 = { "Ana", "25", "Barcelona" };

            csvWriter.writeNext(encabezado);
            csvWriter.writeNext(datos1);
            csvWriter.writeNext(datos2);

            System.out.println("Archivo CSV escrito con éxito.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Explicación del código:

  • CSVWriter se utiliza para escribir datos en formato CSV.
  • writeNext() escribe una línea en el archivo CSV.

Conclusión

El manejo de archivos CSV en Java puede variar desde una solución manual para archivos simples hasta el uso de librerías como OpenCSV para casos más complejos. OpenCSV facilita la lectura y escritura de archivos CSV con comillas y comas dentro de los valores, permitiendo un enfoque más robusto para archivos CSV complejos. Con los ejemplos proporcionados, puedes empezar a trabajar con archivos CSV en tus proyectos Java, adaptando la solución según la complejidad del archivo.

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