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 http://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 http://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

Cambiar la Interfaz Gráfica con skin java

Cambiar la Interfaz Gráfica con skin java

La Interfaz Grafica de Usuario en Java nos brinda la posibilidad de cambiar la apariencia de nuestras aplicaciones, ya s...

Lector Feed con Java/Rome

Lector Feed con Java/Rome

En este tutorial crearemos un lector de Feeds en Java/netbeans, pero antes debemosa saber que es un Feed, según Santa Wi...

Procedimientos almacenados en java

Procedimientos almacenados en java

En este tuto realizaremos la implementación y ejecución de procedimientos almacenados de MySQL en Java, si quieres darle...

Control de versiones con GIT y Netbeans

Control de versiones con GIT y Netbeans

Control de versiones: Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los eleme...

Cambiar API Level en Android Studio

Cambiar API Level en Android Studio

Cuando desarrollamos aplicaciones en el IDE (Entorno de Desarrollo Integrado) de Android Studio, es importante indicar e...

GSON: Generar JSON desde objetos Java

GSON: Generar JSON desde objetos Java

Gson es una biblioteca de código abierto para Java desarrollado por Google Inc que permite la serialización y deserializ...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Comparte lo que sabes

Categorias

Últimas entradas

Las herramientas Online son cada vez más comunes y pueden encontrarse herramientas para casi todo tipo de tareas, en est...

Apache POI es la API de Java para el trabajo con archivos de Microsoft como son Word, Excel y Power Point. Apache POI se...

Gallery.io es una herramienta de colaboración gratuita desarrollada por Google para cargar trabajos de diseño, obtener c...

Android cuenta con una serie de herramientas en su API para el trabajo con gráficos, entre estos podemos mencionar: Bitm...

Android Bolivia

MAUS