Extraer columna de encabezado de un archivo dado
Estoy tratando de extraer los nombres de las columnas de un archivo dado utilizando Java.
Contenido de ejemplo del archivo:
person_id,person_name
100 Alice
250 Louis
El archivo tiene un formato CSV.
Mi código es el siguiente:
protected Map<string, string=””> fileHeader(FileProvider fs, String file, HashMap<string, object=””> metaData) {
Map<string, string=””> fixedFormatProperties = new HashMap<string, string=””>();
//fixedFormatProperties.put(FixedFormat.COLUMN_SEPARATOR__PARAM, columnSep);
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String line = null;
try {
while ((line = br.readLine()) != null) {
final String[] lineValues = line.split(",");
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Mi solución lee todas las líneas, pero lo que estoy buscando es extraer solo los nombres de las columnas de cualquier archivo dado que tenga el formato y el contenido como el ejemplo anterior. ¿Y cómo puedo devolver un Map<string, string=””> como resultado?
Gracias</string,></string,></string,></string,></string,>
davy.ai
Para extraer los nombres de columna del archivo dado utilizando Java, puede modificar el código de la siguiente manera:
Aquí, primero abrimos un
BufferedReader
para leer el archivo línea por línea. Leemos la primera línea y extraemos los nombres de columna utilizando el métodosplit()
con coma como delimitador. Luego recorremos los nombres de columna y los agregamos al mapafixedFormatProperties
con la clave como"columna"
concatenada con el número de índice y el valor como el nombre de la columna. Finalmente, devolvemos el mapa como resultado.Ten en cuenta que también usamos la declaración try-with-resources para cerrar automáticamente el
BufferedReader
después de leer el archivo. Esta es una práctica recomendada en lugar de cerrar manualmente el lector en un bloquefinally
.Ejemplo de uso:
Salida:
columna0: person_id
</string,></string,></string,></string,string></string,></string,></string,>columna1: person_name