Boa tarde pessoal,
Estou aprendendo java e fazendo um código simples para ler um arquivo CSV.
Ele tem dado o erro java.lang.ArrayIndexOutOfBoundsException, eu entendi que o erro acontece por causa do array String[] cli, mas o meu problema está sendo desenvolver uma solução para esse erro.
FileInputStream file = new FileInputStream("C:\\pessoa.csv");
Properties p = new Properties();
p.load(file);
String pessoa = p.toString();
String[] clientes = pessoa.split(",");
for (int i = 0; i < clientes.length; i++) {
String[] cli = clientes[i].split("[|]");
System.out.println(cli[i]);
}
Qual seria a melhor solução para receber o array clientes[]?? O meu código, além do problema, pode ser melhorado em mais alguma coisa??
Andre,
A classe Properties
funciona um pouco diferente do que você provavelmente entendeu. Uma propriedade (ou property) é um par chave/valor. Um .csv
não é um arquivo de properties, mas algo como uma sequência de valores, onde cada linha representa um “objeto”, e os atributos desse objeto são separados por vírgula.
Se você tem, por exemplo um arquivo pessoa.csv
assim:
andre,brasil,guj
lucas,africa do sul,guj
Você pode interpretá-lo assim:
import java.io.*;
import java.util.Arrays;
class Main {
private static final String VIRGULA = ",";
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("pessoa.csv")));
String linha = null;
while ((linha = reader.readLine()) != null) {
String[] dadosUsuario = linha.split(VIRGULA);
System.out.println(Arrays.toString(dadosUsuario));
System.out.println("Nome: " + dadosUsuario[0]);
System.out.println("País: " + dadosUsuario[1]);
System.out.println("Fórum: " + dadosUsuario[2]);
System.out.println("--------------------------");
}
reader.close();
}
}
1 curtida
Muito obrigado pela ajuda.
No meu arquivo cada linha está separada por vírgula e cada coluna separada por pipe.
143| DISTRIBUIDORA DE ALIMENTOS LTDA|10854725000855,
260|R CIA LTDA|11312889000169,
Então para instanciar o objeto e salvar nas minhas colunas id, nome e cpfcnpj do banco de dados, eu preciso fazer o split dos dois??
Então não é um CSV. Mas indiferente, da para parsear.
Existem quebras de linha no arquivo? Se sim, você pode usar a mesma técnica, só vai precisar tirar a vírgula no final de cada linha e dar split usando |
ao invés da vírgula.
Valeu demais pela ajuda amigo…
Muito obrigado mesmo.
Ajudou muito aqui amigo. Obrigado!