Tenho um arquivo TXT que preciso ler linha por linha.
Leio o arquivo assim:
public List<ProdutosMOD> getProdutos() {
List<ProdutosMOD> produtos = new ArrayList<ProdutosMOD>();
ProdutosMOD produto;
String caminhoLocal = System.getProperty("user.dir");
try {
FileReader arq = new FileReader(caminhoLocal + "\\Arquivos\\Enviar\\produtos.txt");
BufferedReader lerArq = new BufferedReader(arq);
String linha = lerArq.readLine();
while (linha != null) {
String[] campos = linha.split("\\|");
produto = new ProdutosMOD();
produto.setId(Integer.parseInt(campos[0].trim()));
produto.setNome(campos[1].trim());
produto.setMarca(campos[2].trim());
if (!campos[3].trim().equals("")) {
produto.getGrupo().setId(Integer.parseInt(campos[3].trim()));
}
if (!campos[4].trim().equals("")) {
produto.getSubgrupo().setId(Integer.parseInt(campos[4].trim()));
}
if (!campos[5].trim().equals("")) {
produto.setEstoque(Integer.parseInt(campos[5].trim()));
}
produto.setPrecoVenda(new BigDecimal(campos[6].trim()));
produto.setDesconto(new BigDecimal(campos[7].trim()));
produtos.add(produto);
linha = lerArq.readLine();
}
arq.close();
return produtos;
} catch (IOException e) {
StatusLog statusLog = new StatusLog();
statusLog.setErro("Erro na abertura do arquivo produtos.txt");
FormPrincipal.addLog(statusLog);
}
return null;
}
Cada linha do arquivo tem a seguinte estrutura:
2|ACETONA - IDEAL 500ML|LEMOS E RAGO|1|1|34|11.43|0.00|
Acontece que se uma linha for assim: com o ultimo campo em branco:
2|ACETONA - IDEAL 500ML|LEMOS E RAGO|1|1|34|11.43||
É criado um vetor com uma posição a menos, ai me da erro nessa linha
produto.setDesconto(new BigDecimal(campos[7].trim()));
Exception in thread "Thread-4" java.lang.ArrayIndexOutOfBoundsException: 7
at com.softcom.arquivos.LerArquivos.getProdutos(LerArquivos.java:313)
at com.softcom.forms.FormPrincipal.enviarProdutos(FormPrincipal.java:587)
at com.softcom.forms.FormPrincipal.access$1300(FormPrincipal.java:49)
Como posso resolver isso? Tem como fazer criar a ultima posição do vetor em branco?
