Boa tarde pessoal,
Estou com um exercício onde tenho um arquivo em csv.
O método para leitura do arquivo eu tenho esse:
public static List<String[]> lerArquivos(String arquivoInsumos) {
// estrutura para armazenar o conteudo do aquivo e devolver para quem acionou
List<String[]> listaRetorno = new ArrayList<String[]>();
BufferedReader conteudoCSV = null;
String linha = "";
String csvSeparadorCampo = ";";
// boolean primeiraLinha = true;
try {
conteudoCSV = new BufferedReader(new FileReader(arquivoInsumos));
while ((linha = conteudoCSV.readLine()) != null) {
String[] dados = linha.split(csvSeparadorCampo);
System.out.println(" " + dados[0] + " " + dados[1] + " " + dados[2] + " " + dados[3] + " "
+ dados[4] + " " + dados[5] + " " + dados[6] + " " + dados[7] + " " + dados[8] + " "
+ dados[9] + " " + dados[10] + " " + dados[11] + " " + dados[12] + " " + dados[13] + " "
+ dados[14] + " " + dados[15]);
// adiciona linha na estrutura
listaRetorno.add(dados);
}
} 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());
}
}
}
return listaRetorno;
E agora eu preciso validar se a quantidade de colunas está correta, pois é necessário que tenha o mesmo número de campos lidos (16).
Cheguei a ler sobre a utilização do tokenizer, mas não deu o efeito esperado.
public static List getTokensFromFile(String arquivoInsumos){
List<String> tokens = new ArrayList<String>();
String linha = "";
StringTokenizer tokenizer;
String csvSeparadorCampo = ";";
BufferedReader conteudoCSV = null;
int tokenLenght = tokens.size();
try {
conteudoCSV = new BufferedReader(new FileReader(arquivoInsumos));
while ((linha = conteudoCSV.readLine()) != null) {
tokenizer = new StringTokenizer(csvSeparadorCampo);
while(tokenizer.hasMoreElements()) {
tokens.add(tokenizer.nextToken());
}
}
} catch (IOException e) {
e.printStackTrace();
}
//return tokens;
System.out.println(tokens.size());
return tokens;
}
Gostaria de uma ajuda para que eu pudesse validar se o total de colunas == 16 é o correto e caso contrário, tenha uma coluna a mais ou coluna a menos, retorne erro de quantidade de colunas inválidas.
Grato pela ajuda!!!