Olá pessoal…
Estou desenvolvendo um pequeno projeto como trabalho de faculdade. O objetivo é possibilitar escrita, leitura e edição de um arquivo txt via uma interface gráfica, que no meu caso utilizei o Java Swing. Escrever no arquivo foi tudo beleza, agora chegou a parte chata. Preciso que quando o usuário do “sistema” digitar um nome no jTextField e clicar no JButton, seja desencadeada uma busca no arquivo, retornando os dados referentes ao nome caso este exista. Vou postar apenas o código referente à busca e retorno em si. Vejam:
private void submitActionPerformed(java.awt.event.ActionEvent evt) {
String inserido = pesquisa.getText();
ArrayList<String> dados = new ArrayList();
String temp = "";
try {
FileReader leitorDeArquivo = new FileReader("usuarios.txt");
BufferedReader carregadorDeArquivo = new BufferedReader(leitorDeArquivo);
try {
while(carregadorDeArquivo.ready()){
temp += carregadorDeArquivo.readLine()+"\n";
if(temp.equals("")){
dados.add(temp);
}
}
} catch (IOException ex) {
Logger.getLogger(Consulta.class.getName()).log(Level.SEVERE, null, ex);
}
String [] cadastros = dados.toArray(new String[dados.size()]);
for(int x=0;x <= cadastros.length;x++){
if(cadastros[x].equals(inserido)){
pesquisa.setText(dados.get(x));
}
}
} catch (FileNotFoundException ex) {
Logger.getLogger(Consulta.class.getName()).log(Level.SEVERE, null, ex);
}
}
No meu arquivo, os dados estão estruturados da seguinte forma:
Nome.: ******
Endereço.: *****
CPF.: ******
Caso o nome inserido seja igual ao que está no arquivo, o texto do jTextArea deverá ser alterado retornando os dados relacionados àquele nome, no formato que descrevi acima.
Minha lógica é ler o arquivo linha a linha e ir guardando em uma variável temporária até que o “sistema” encontre uma linha vazia, que usei como delimitador. Assim que esta for encontrada, estes valores são guardados em uma ArrayList. Só que como não consegui imprimir o ArrayList dentro do jTextField, o transformei em um Array normal. Mas aí tenho como retorno ao efetuar a busca:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0
Tem mais um monte de linhas, mas tudo detalhando este erro. Pesquisando aqui mesmo no fórum, me pareceu que o tamanho do array foi estourado, o que é estranho, afinal, eu defini o seu tamanho para o mesmo do ArrayList…
Se puderem me dar uma ajuda, ficarei muito grato!