Pessoal,
tenho um programa feito há algum tempo já, que sempre funcionou. Entretanto, formatei meu PC e fiquei só com o código salvo, e meses não o usei. Agora reistalei meu NetBeans e meu JDK, para poder reutilizá-lo. Mas estou com um problema com a classe Scanner (acredito qeu seja nela).
Tenho um arquivo de palavras, e eu faço uma busca com pattern nele, a partir de uma palavra digitada. Entretanto, meu arquivo simplesmente para de buscar na palavra 104, ignorando todas as outras abaixo (acho que tenho umas 30 mil no arquivo). Sem dar erro nenhum, sem estouro de memória nem nada. Alguém sabe de algum problema assim. Acredito que seja com alguma das atualizações Java, porque realmente revirei o código, e acredito que ele sempre tenha sido assim.
Até pesquisei no arquivo para ver se tinha caracteres especiais, mas não tem nada. A última palvra pesquisada é "abolicionismo", e a próxima seria "abolicionista", e é ignorada.
private TreeSet<String> pesquisarPalavraScanner(String regex, String nomeDoArquivo) throws Exception {
TreeSet<String> a = new TreeSet();
File arquivo = new File(nomeDoArquivo);
Scanner lendoArquivo = new Scanner(arquivo);
// leia o arquivo linha por linha até chegar ao seu fim
Pattern p = Pattern.compile(" " + regex + " ", Pattern.CASE_INSENSITIVE);
while (lendoArquivo.hasNextLine()) {
String linha = lendoArquivo.nextLine();
String[] palavras = linha.split(" "); // para a possibilidade de várias palavras numa linha
for (int i = 0; i < palavras.length; i++) {
if (p.matcher(" " + palavras[i] + " ").find()) {
a.add(palavras[i]);
}
}
}
// fechando o scanner
lendoArquivo.close();
return a;
}