Olá pessoal tenho uma rotina de exportação de um arquivo do tipo :
SR;[telefone removido];2010-06-27;2010-06-23;25;0.0;Implementar Rotina de Instalação;
SR;[telefone removido];2010-06-12;2010-06-18;06;0.0;Implementar Pacote 1 Relatórios;
e um método que trata essas strings e separa por tokens pegando a próxima linha com o reader.readLine() dessa forma:
try {
String encoding = "ISO-8859-1";
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(arquivo.getFile()), encoding));
int numeroLinhas = 0;
String dados[] = new String[7];
String linha = reader.readLine();
while (!linha.equalsIgnoreCase("")) {
ValidaLinhaImportada linhaPesquisada = new ValidaLinhaImportada();
StringTokenizer st = new StringTokenizer(linha, ";");
numeroLinhas += 1;
if (st.countTokens() == 7) {
dados[0] = st.nextToken();
dados[1] = st.nextToken();
dados[2] = st.nextToken();
dados[3] = st.nextToken();
dados[4] = st.nextToken();
dados[5] = st.nextToken();
dados[6] = st.nextToken();
while (st.hasMoreTokens()) {
dados[6] = dados[6] + st.nextToken();
}
setavaloresLinhaPesquisada(linhaPesquisada, numeroLinhas, dados);
if (linhaPesquisada.getTipo().equals("OS") && linhaPesquisada.verificaPassouTodasValidacoesOS()) {
Os os = setaValoresOs(linhaPesquisada);
inserirOS(os, linhaPesquisada.getErro());
contSucesso = contSucesso + 1;
linha = reader.readLine();
} else if (linhaPesquisada.getTipo().equals("SR") && linhaPesquisada.verificaPassouTodasValidacoesServico()) {
Servico servico = setaValoresServico(linhaPesquisada);
System.out.println("Passou Sucesso---->" + linha + "\n" + linhaPesquisada.getErro());
inserirServico(servico, linhaPesquisada.getErro());
contSucesso = contSucesso + 1;
linha = reader.readLine();
} else {
System.out.println("Passou erro---->" + linha + "\nErro " + linhaPesquisada.getErro());
contErro = contErro + 1;
linha = reader.readLine();
}
} else {
contErro = contErro + 1;
System.out.println("\nRegistro do arquivo[" + numeroLinhas + "] : " + linha + " Erro : Campos não informados!");
linha = reader.readLine();
}
reader.close();
}
System.out.println("Total de linhas: " + numeroLinhas);
System.out.println("Total de erros:" + contErro);
System.out.println("Total de itens inseridos com sucesso: " + contSucesso);
// reader.close();
} catch (Exception excecao) {
logger.error("Erro ao tentar efetuar o Upload do Arquivo: " + arquivo.getFile(), excecao);
}
}
o código funciona e faz as validações de acordo com a classe valida ValidaLinhaImportada, porem quando as linhas terminam o while continua procurando por uma linha que não tem nenhuma string te tenta valida-la. Onde estou errando na condição do while??
Abraço