GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Eliminar linhas vazias de um arquivo CSV

Olá galera,
Ao tentar ler e importar os dados de um arquivo CSV com JAVA utilizando o código abaixo, ele me retorna a seguinte mensagem: [NUMERO_DA_VENDA = 1411 , NOME_DO_CLIENTE = JOAO CAVALCANTE , DATA_DA_VENDA = 01/01/2020 , VALOR_DA_VENDA = 193,91]
IndexOutOfBounds:
Index 1 out of bounds for length 1

Observação: o arquivo csv alterna entre linhas preenchidas e vazias como segue abaixo

|1411|JOAO CAVALCANTE|01/01/2020|193|91|
||||||
|1412|MARIA APARECIDA|02/01/2020|1927|98|
||||||
|1413|EDUARDO FEITOSA|03/01/2020|702|74|
||||||
|1414|JOSÉ FERREIRA|05/01/2020|574|19|
||||||
|1415|GABRIELA EDUARDA|05/01/2020|493|20|

Já tentei de diversas formas retirar esse erro porém não encontrei solução.
Desde já, obrigado!

Segue o código:

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

public class Main {
  
  public static void main(String[] args) {
    String clientesCSV = "E:\\eclipse-workspace\\Projeto Effetive Sistemas\\PENDENTES\\MODELO_ARQUIVO_PARA_IMPORTACAO_DEV.csv";
    BufferedReader conteudoCSV = null;
    String linha = "";
    String CSVseparador = ";";
    
    try {
      conteudoCSV = new BufferedReader(new FileReader(clientesCSV));
      
      while ((linha = conteudoCSV.readLine()) != null) {
        String[] vetor = linha.split(CSVseparador);
        System.out.println("[NUMERO_DA_VENDA = " + vetor[0]
          + " , NOME_DO_CLIENTE = " + vetor[1]
          + " , DATA_DA_VENDA = " + vetor[2]
          + " , VALOR_DA_VENDA = " + vetor[3] + "]");
      }
    } catch (FileNotFoundException e) {
      System.out.println("Arquivo não encontrado: \n" + e.getMessage());
    } catch (ArrayIndexOutOfBoundsException e) {
      System.out.println("IndexOutOfBounds: \n" + e.getMessage());
    }catch (IOException e) {
      System.out.println("IO Erro: \n" + e.getMessage());
    } finally {
      if (conteudoCSV != null) {
        try {
          conteudoCSV.close();
        } catch (IOException e) {
          System.out.println("IO Erro: \n" + e.getMessage());
        }
      }
    }
  }
}

A linha está mesmo vazia ou tem os separadores? O teu exemplo tem como separador o pipe | mas no código usas como separador o ponto e vírgula ; e, pela mensagem de erro parece que a linha vazia não tem qualquer separador.

Se for este o caso, não processes as linhas vazias:

 while((linha = conteudoCSV.readLine()) != null) {

     if (linha.trim().isEmpty()){
        continue;
     }

     String[] vetor = .....

Isso não é um arquivo CSV.
CSV usa vírgulas para separar os campos.
No seu exemplo de arquivo o separador é | e no seu código java o separador é ;.
Tem que postar o código e descrição corretas, senão é difícil ajudar.

De qualquer forma, no seu caso é só processar as linhas que são diferentes de "||||||".

//