Continuar lendo o txt da onde parou?

while((linha = leitor.readLine())!= null){ String[] array = linha.split(";"); if(array[0].equals(valor)){ t_Cad.getJTextField().setText(valor); //tFilial t_Cad.getJTextField1().setText(array[1]); //tAtendente t_Cad.getJTextField2().setText(array[2]); //tCliente t_Cad.getJTextField3().setText(array[3]); //tCidade t_Cad.getJTextField4().setText(array[4]); //tEstado t_Cad.getJTextField5().setText(array[5]); //tNome t_Cad.getJTextField6().setText(array[6]); //tCargo t_Cad.getJTextField51().setText(array[7]); //tEmail t_Cad.getJTextField52().setText(array[8]); //tTelefone t_Cad.getJTextPane().setText(array[11]); //tObservação break; } } }

Pessoal, neste código eu uso o break para ele parar no primeiro registro que ele encontrar de um JtextField que eu pego o conteúdo.
Mas minha duvida é o seguinte:

Em um botão “Próximo Registro” eu quero colocar que quando o cara clicar nele, ele continue a leiturar do arquivo.txt da onde parou e exiba o próximo registro que tem o mesmo conteúdo do JTextField.

Vejam como é meu arquivo:

01;joao ;02131
02;maria;23465
01;jose ;32313
04;jorge;46546

Eu uso o split para separar os ‘;’

Alguém sabe como posso fazer isso, como no exemplo do arquivo: o usuário vai digitar 01 no JTextField para buscar, eu vou ler o arquivo e parar na primeira linha, e quando ele clicar em “Próximo Registro” ele continue lendo e mostre a terceira linha?

Obrigado!

cara só testando…

talvez se vc der String linha2 = leitor.readLine()
ele pegue a proxima linha…uam vez que vc deu break mas nao deu o reset no seu buffer…

nao testei isso mas vc pode V se rola!!

espero ter ajudado…

[quote=abelgomes]talvez se vc der String linha2 = leitor.readLine()
ele pegue a proxima linha…uam vez que vc deu break mas nao deu o reset no seu buffer…
[/quote]

Cara não entendi muito o que quis dizer, pois minha váriável linha eu declaro simplesmente assim:

String linha = null;

Onde você fala para mudar no código?
Ou quis dizer para eu declarar linha1, 2, 3 para cada linha do arquivo? Daí é loucura…

O abelgomes tá certo. Enquanto você não der leitor.close(); o readLine() vai pegar a próxima linha independente de você ter saído desse while com break.

Cara mas é exatamente isso que eu quero…que ele pare no primeiro registro que encontrar, eu exibi-lo numa tela…e ao clicar em Proximo ele continue lendo.

Mas não entendi a resposta dele! 8)

se vc quer ler a linha so quando apertar o botao, entao nao precisa do while é só fazer no evento do botao, toda vez que clicar linha = leitor.readLine();

assim vc vai ler linha por linha toda vez que vc apertar o botao.

oque eu quis dizer na mensagem anterior é que enquanto vc nao der leitor.close() ou leitor.reset() o cursor vai estar sempre na linha que vc parou de ler!

[quote=abelgomes]se vc quer ler a linha so quando apertar o botao, entao nao precisa do while é só fazer no evento do botao, toda vez que clicar linha = leitor.readLine();

assim vc vai ler linha por linha toda vez que vc apertar o botao.
[/quote]

Mas imagine o arquivo assim:

01
03
04
01
02
01

Eu preciso de um laço, para ele ler linha por linha, mas me trazer só os 01 por exemplo, entendeu?
8)

Um exemplo, o while do main simula +/- o seu botão:

[code]public class T {

public static void main(String[] args) throws IOException {
FileReader fr = new FileReader(“C:/arquivo.txt”);
BufferedReader leitor = new BufferedReader(fr);

  int i = JOptionPane.YES_OPTION;
  while(i != JOptionPane.NO_OPTION) {
     nextId(leitor);
     i = JOptionPane.showConfirmDialog(null, "continua?", "", JOptionPane.YES_NO_OPTION);
  }
  
  fr.close();
  leitor.close();

}

public static void nextId(BufferedReader leitor) throws IOException {
while (leitor.ready()) {
String linha = leitor.readLine();
String[] array = linha.split(";");
if (array[0].equals(“01”)) {
System.out.println(“yes”);
break;
}
}

  if (!leitor.ready()) {
     JOptionPane.showMessageDialog(null, "Fim do arquivo alcançado");
  }

}
}[/code]