Informática, perguntado por bebel97, 1 ano atrás

Como converter um arquivo CSV em um vetor em Java

Soluções para a tarefa

Respondido por rosasev121
1

Olha se fizer um split das linhas e um mapa ou até mesmo uma lista para guardar cada posição não terá problema, depois a cada linha é só fazer um loop interando por cada elemento resultante do split.

O exemplo abaixo é bastante simplificado, mas servirá para te dar um norte de como proceder veja, que posso pegar os ultimos elementos "sem saber" quantos possuem na linha. De forma análoga, terá de fazer um for até o pais.length para iterar sobre os diversos elementos do seu csv.

arquivo.csv

"1.0.0.0","1.0.0.255","16777216","16777471","AU","Australia"
"1.0.1.0","1.0.3.255","16777472","16778239","CN","China"
"1.0.4.0","1.0.7.255","16778240","16779263","AU","Australia"
"1.0.8.0","1.0.15.255","16779264","16781311","CN","China"
"1.0.16.0","1.0.31.255","16781312","16785407","JP","Japão"
"1.0.32.0","1.0.63.255","16785408","16793599","BR","Brasil"
"1.0.64.0","1.0.127.255","16793600","16809983","JP","Japão"
"1.0.128.0","1.0.255.255","16809984","16842751","DK","Dinamarca"
stack.LeiaCVS.java

package stack;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class LeiaCVS {

public static void main(String[] args) {

LeiaCVS obj = new LeiaCVS();
obj.run();

}

public void run() {

String arquivoCSV = "arquivo.csv";
BufferedReader br = null;
String linha = "";
String csvDivisor = ",";
try {

br = new BufferedReader(new FileReader(arquivoCSV));
while ((linha = br.readLine()) != null) {

String[] pais = linha.split(csvDivisor);

System.out.println("País [code= " + pais[pais.length-2]
+ " , name=" + pais[pais.length-1] + "]");

}

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

}


bebel97: Não dá pra salvar no vetor, ele só vai mostrar oq tá salvo e dps q mostra só sobrescrever
bebel97: Oq eu queria era algo assim:
Salvar as linhas de um arquivo CSV em uma matriz int.
Exemplo:
Faz a leitura do CSV, pega uma coluna e salva ela em uma das colunas da matriz int.
Se a segunda coluna do CSV é:
1
2
3
A matriz int deve ser:
Int[0][0][0] = 1
Int[0][1][0] = 2
Int[0][2][0] = 3

De tal forma q se eu for acessar ela fora da leitura do CSV em outro método eu possa chamar tipo:
Int[0][1][0]
E vai aparecer o 2.

Só q tem q salvar todas as colunas do CSV
Perguntas interessantes