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
y por consola tenemos:
enjoy!!!
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! :)
Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la inter...
Una Interface Funcional es una interface que contiene uno y solo un método abstracto aunque puede contener métodos por d...
Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la inter...
En este post crearemos una aplicación sencilla para mandar mensajes de texto desde android. Necesitamos IDE: Eclipse + S...
En este tutorial se explica una forma de crear CD autoejecutable para programas hechos en java asi como para instalar la...
En esta oportunidad, se deja a disposición de la comunidad de programadores de Bolivia y también porque no, del que quie...
El gigante tecnologico Google a puesto un bonito Doodle en su buscador que esta fascinando a sus millones de usuarios qu...
WhatsApp anuncio a través de su blog que ya se encuentra disponible la función de envío de fotos y videos TEMPORALES, es...
Muchas de las innovaciones computacionales de la NASA se desarrollaron para ayudar a explorar el espacio, pero ahora la...
TikTok es una plataforma de microvideos muy popular entre los jóvenes el cual cuenta ya con millones de videos cortps de...