En el post te hoy te enseñaré a crear un ArrayList a partir de un archivo de texto plano en formato separado por comas usando Java.
Es decir, vamos a leer el archivo línea por línea, crear un objeto y luego agregar ese objeto al ArrayList. Básicamente vamos a convertir un txt o archivo separado por comas a un ArrayList.
Para este caso usaré la clase Persona
que tiene los atributos nombre
, edad
y dirección
.
El archivo es el siguiente:
Luis;40;Su casa
Link;20;Hyrule
Hollow Knight;5;Hallownest
Puedes tomarlo como convertir un CSV a ArrayList o un TXT a ArrayList.
Convertir un CSV a ArrayList en Java es muy sencillo. Primero abrimos y recorremos el archivo línea por línea.
Después usamos split para convertir esa línea a arreglo, separándola por el punto y coma.
Para el ejemplo del archivo que coloqué al inicio, en la posición 0 del arreglo estaría el nombre, en la 1 la edad y en la 2 la dirección.
Ahora que tenemos un arreglo con los datos que necesitamos hacemos las conversiones de String a Int necesarias, creamos un objeto y luego lo agregamos al ArrayList.
Primero veamos la clase. Recuerda que se supone que dentro del CSV hay un objeto por línea (serializado) y que vamos a crear varios objetos de este tipo:
class Persona {
private String nombre, direccion;
private int edad;
public Persona(String nombre, int edad, String direccion) {
this.nombre = nombre;
this.edad = edad;
this.direccion = direccion;
}
@Override
public String toString() {
return "Nombre: " + this.nombre + " edad: " + this.edad + ", direccion: " + this.direccion;
}
public String getNombre() {
return this.nombre;
}
public String getDireccion() {
return this.direccion;
}
public int getEdad() {
return this.edad;
}
}
Por el momento no coloqué setters ni más constructores, pues basta con lo que se ve en la clase para el ejercicio que vamos a resolver.
Creamos el ArrayList de tipo Persona
que al inicio estará vacío y también abrimos el archivo manejando las excepciones:
final String NOMBRE_ARCHIVO = "personas.txt";
final String SEPARADOR_CAMPO = ";";
ArrayList<Persona> personas = new ArrayList<>();
FileReader fileReader = null;
BufferedReader bufferedReader = null;
try {
fileReader = new FileReader(NOMBRE_ARCHIVO);
bufferedReader = new BufferedReader(fileReader);
String linea;
}
Ahora hacemos un ciclo while leyendo el archivo línea por línea, y justo ahí ocurre la magia en donde agregamos el objeto al ArrayList con add
:
while ((linea = bufferedReader.readLine()) != null) {
String[] personaComoArreglo = linea.split(SEPARADOR_CAMPO);
personas.add(new Persona(personaComoArreglo[0], Integer.valueOf(personaComoArreglo[1]),
personaComoArreglo[2]));
}
La conversión también ocurre en la línea 3 en donde usamos Integer.valueOf
. Finalmente regresamos ese ArrayList y así es como hemos transformado un txt a un ArrayList en Java.
El código completo junto con su uso queda como se ve a continuación. Recuerda que el orden del archivo TXT o CSV es importante y que el mismo debe existir:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
class Persona {
private String nombre, direccion;
private int edad;
public Persona(String nombre, int edad, String direccion) {
this.nombre = nombre;
this.edad = edad;
this.direccion = direccion;
}
@Override
public String toString() {
return "Nombre: " + this.nombre + " edad: " + this.edad + ", direccion: " + this.direccion;
}
public String getNombre() {
return this.nombre;
}
public String getDireccion() {
return this.direccion;
}
public int getEdad() {
return this.edad;
}
}
class Main {
public static ArrayList<Persona> obtener() {
final String NOMBRE_ARCHIVO = "personas.txt";
final String SEPARADOR_CAMPO = ";";
ArrayList<Persona> personas = new ArrayList<>();
FileReader fileReader = null;
BufferedReader bufferedReader = null;
try {
fileReader = new FileReader(NOMBRE_ARCHIVO);
bufferedReader = new BufferedReader(fileReader);
String linea;
while ((linea = bufferedReader.readLine()) != null) {
String[] personaComoArreglo = linea.split(SEPARADOR_CAMPO);
personas.add(new Persona(personaComoArreglo[0], Integer.valueOf(personaComoArreglo[1]),
personaComoArreglo[2]));
}
} catch (IOException e) {
System.out.println("Excepción leyendo archivo: " + e.getMessage());
} finally {
try {
if (fileReader != null) {
fileReader.close();
}
if (bufferedReader != null) {
bufferedReader.close();
}
} catch (IOException e) {
System.out.println("Excepción cerrando: " + e.getMessage());
}
return personas;
}
}
public static void main(String[] args) {
ArrayList<Persona> personas = obtener();
// Podemos imprimirlas...
System.out.println(personas);
// O recorrerlas
for (int x = 0; x < personas.size(); x++) {
Persona persona = personas.get(x);
System.out.println("Tenemos una persona con nombre " + persona.getNombre() + " edad " + persona.getEdad()
+ " y direccion " + persona.getDireccion());
}
}
}
En el main simplemente estoy obteniendo el ArrayList desde el archivo de texto plano y también recorriéndolo.
La salida ya la dejé en una imagen anteriormente. Es importante aclarar que esto es un ejemplo de una clase con 3 atributos pero que puedes ajustar para manejar más atributos o una clase distinta.
Para terminar te dejo con más tutoriales de Java en mi blog.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.