Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Escritura y lectura de archivos CSV

Escritura y lectura de archivos CSV

Autor jc mouse miércoles, mayo 2, 2018

Los archivos CSV (del inglés comma-separated values – separados por comas) son un tipo de documento en formato abierto sencillo para representar datos en forma de tabla donde las columnas se separan por comas (también por otro tipo de delimitador como ser punto y coma «;»,  barra vertical o pipe «|», etc) y las filas por saltos de línea.

Si bien son archivos de texto, estos se guardan bajo la extensión *.CSV para poder diferenciarlos.

Java nos permite trabajar cómodamente con archivos de texto e implementar los métodos necesarios para el trabajo con archivos CSV, pero también es preferible contar con otras opciones que nos ahorran lineas de código y de tiempo. Una de estas herramientas es Apache Commons CSV que a la fecha se encuentra en su versión 1.5 (https://commons.apache.org/proper/commons-csv/)

A continuación un ejemplo de su uso para la escritura y lectura de archivos CSV

Clase Persona

/**
 * @see https://www.jc-mouse.net/
 * @author mouse
 */
public class Persona {

    private String nombre;
    private String apellido;
    private int edad;
    private String mail;    

    public Persona(String nombre, String apellido, int edad, String mail) {
        this.nombre = nombre;
        this.apellido = apellido;
        this.edad = edad;
        this.mail = mail;        
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    public String getMail() {
        return mail;
    }

    public void setMail(String mail) {
        this.mail = mail;
    }  

    @Override
    public String toString() {
        return "Persona{" + "nombre=" + nombre + ", apellido=" + apellido + ", edad=" + edad + ", mail=" + mail + '}';
    }

}

Clase Main implementando la librería Apache Commons CSV

import java.io.BufferedReader;
import java.io.IOException;
import java.io.Writer;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVPrinter;
import org.apache.commons.csv.CSVRecord;

/**
 * @see https://www.jc-mouse.net/
 * @author mouse
 */
public class Main {

    public static void main(String[] args) {

        final String[] encabezado = {"Nombre", "Apellido", "Edad", "E-Mail"};
        final Character delimiter = '|';//Delimitador, por defecto es ","
        String archivoCSV = "E:\\documentos\\archivocsv.csv";//Nombre de archivo CSV

        /**
         * Datos para el archivo CSV
         */
        ArrayList<Persona> personaList = new ArrayList<>();
        personaList.add(new Persona("Armando", "Bronca Segura", 99, "armn_s8@mail.com"));
        personaList.add(new Persona("Benny", "Melo Sobas", 19, "benny__9@mail.com"));
        personaList.add(new Persona("Encarna", "Vales Nosvemos", 41, "envams5@mail.com"));
        personaList.add(new Persona("Soledad", "Severa del Campo", 68, "sol8_campos@mail.com"));

        /**
         * Escritura archivo CSV
         */
        try {
            Writer writer = Files.newBufferedWriter(Paths.get(archivoCSV));
            CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT.withHeader(encabezado)
                    .withDelimiter(delimiter));

            for (Persona p : personaList) {
                csvPrinter.printRecord(Arrays.asList(
                        p.getNombre(),
                        p.getApellido(),
                        String.valueOf(p.getEdad()),
                        p.getMail()));
            }
            csvPrinter.flush();
            System.out.println("Archivo CSV creado.\n");
        } catch (IOException e) {
            e.printStackTrace();
        }

        /**
         * Lectura Archivo CSV
         */
        System.out.println("Lectuar de Archivo CSV ["+archivoCSV+"] "); 
        try {
            BufferedReader reader = Files.newBufferedReader(Paths.get(archivoCSV));
            CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT.withFirstRecordAsHeader().
                    withHeader(encabezado)
                    .withIgnoreHeaderCase()
                    .withTrim()
                    .withDelimiter(delimiter));
            
            System.out.println("Registros: "); 
            for (CSVRecord csvRecord : csvParser) {
                Persona persona = new Persona(
                        csvRecord.get("Nombre"),
                        csvRecord.get("Apellido"),
                        Integer.valueOf(csvRecord.get("Edad")),
                        csvRecord.get("E-Mail")
                );                
                System.out.println(" - " +persona);                
            }
            System.out.println("\nLectura de archivo CSV terminada.");
        } catch (IOException | NumberFormatException e) {
            e.printStackTrace();
        }

    }

}

Esto nos da como resultado, un archivo *:csv de la forma

texto plano

y por consola tenemos:

consola java

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Store Procedure: Result Set

Store Procedure: Result Set

Los procedimientos almacenados no solo pueden retornar valores como números, cadenas, etc, sino también datos como los R...

Codigo de Control en Visual Basic | Impuestos Bolivia

Codigo de Control en Visual Basic | Impuestos Bolivia

En esta oportunidad dejamos las fuentes del Generador de Código de Control de Impuestos Bolivia (Facturación Virtual), e...

Envío de correo con JavaMail/Netbeans

Envío de correo con JavaMail/Netbeans

JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el...

Crear componente Switch de Android para Java Swing

Crear componente Switch de Android para Java Swing

En este post crearemos un componente que solo hay en android y que no esta disponible en la paleta de controles de Netbe...

JSpinner: Cambiar color de fondo y fuente

JSpinner: Cambiar color de fondo y fuente

Un JSpinner es un componente swing de java con una caja de texto y un par de botones que nos permiten incrementar  y dec...

Crea una libreria TimeChooser – Selector de Tiempo

Crea una libreria TimeChooser – Selector de Tiempo

En este post crearemos un componente gráfico para java que nos permitirá seleccionar la hora del día de una manera senci...

Comparte lo que sabes

Categorias

Últimas entradas

Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...

Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...

Herramientas

Generador de Enlaces a Whatsapp