Buscar linhas de arquivo com jComboBox

Olá comunidade, estou tentando fazer uma busca da seguinte maneira, pegar uma data de uma linha de um arquivo de texto até outra linha. Por exemplo, do dia 01/01/2018 até o dia 01/05/2018. Tenho 2 comboBox um “a partir…” e outro “até…” do jeito que está abaixo ele pega só o primeiro comboBox.

BufferedReader in = new BufferedReader(new FileReader(arquivo));
    String dados = null;
    String tex;
    while (in.ready()) {
        dados = in.readLine(); // pega a linha do txt
        texto.add(dados); // armazena a linha do txt
                    
if (dados.contains((String) comboDia.getSelectedItem() + (String) comboMes.getSelectedItem() + (String) comboAno.getSelectedItem()))  {
            tex = dados;
            jTextArea1.append(tex + "\n");                    
        }
    }
    in.close();

Tentei colocar um laço assim mas não deu certo:

for(int i=comboDia.getSelectedIndex(); i<comboDia1.getSelectedIndex(); i++)

Ola

se eu entendi certo, o seu arquivo contem datas e vc quer imprimir desde x ate y ( incluso as bordas do intervalo )

pois bem: vc precisa de um criterio de começo e um criterio de parada.

boolean comecou = false
while( in.ready()) {
  linha = in.readLine()
   if( comecou ) {
     // imprime linha
   }
   if( comecou && /* verifique se vc chegou ao fim */ ) {
      comecou = false; // ou use break; para sair do loop
   }
   if ( !comecou && /* verifique se vc chegou ao inicio */ ){ 
      comecou = true
   } 
}

agora defina os criterios de comeco e fim

mas não teria que pegar os valores do comboBox? Fiz assim e não funcionou…

boolean comecou = false;
            while (in.ready()) {
                dados = in.readLine(); 
                texto.add(dados); 
                if(comecou){
                    tex = dados;
                    jTextArea1.append(tex + "\n");
                }
                if (comecou && dados.contains((String) comboDia.getSelectedItem() + (String) comboMes.getSelectedItem() + (String) comboAno.getSelectedItem())) {
                    comecou = false;
                }
                if (comecou && dados.contains((String) comboDia1.getSelectedItem() + (String) comboMes1.getSelectedItem() + (String) comboAno1.getSelectedItem())){
comecou = true;
                    
                }
            }

Qual o layout das linhas do arquivo?
Qual o formato das datas?
Estão em quais posições?

Não basta você fazer um if (linha.contains(data)) { }.
Você precisa verificar se a data que existe na linha do arquivo está dentro do intervalo de datas desejado.

as linhas seriam assim:

000000108325112017063601397184127846
000000108325112018063601397184127846

(Em negrito, a sequencia é dia, mês e ano)

As datas estão em um comboBox

Esse intervalo que não estou conseguindo fazer…

Está assim:
guj

private void exemplo() throws Exception {
    SimpleDateFormat formato = new SimpleDateFormat("ddMMyyyy");
    Date inicio = formato.parse((String) comboDiaDe.getSelectedItem() + (String) comboMesDe.getSelectedItem() + (String) comboAnoDe.getSelectedItem());
    Date fim = formato.parse((String) comboDiaAte.getSelectedItem() + (String) comboMesAte.getSelectedItem() + (String) comboAnoAte.getSelectedItem());
    BufferedReader entrada = new BufferedReader(new FileReader(arquivo));
    StringBuilder texto = new StringBuilder();
    String linha = null;
    while ((linha = entrada.readLine()) != null) {
        String campoData = linha.substring(10, 18); // posiçoes correspondentes à data na linha do arquivo
        Date data = formato.parse(campoData);
        if (estaDentroDoPeriodo(data, inicio, fim)) {
            texto.append(campoData).append("\n");
        }
    }
    entrada.close();
    jTextArea1.setText(texto.toString());
}

private boolean estaDentroDoPeriodo(Date data, Date de, Date ate) {
    if (data.equals(de)) {
        return true;
    }
    if (data.equals(ate)) {
        return true;
    }
    return data.after(de) && data.before(ate);
}

retornou

java.text.ParseException: Unparseable date: "LPbdrY/v"
at java.text.DateFormat.parse(DateFormat.java:366)

ja add o import java.util.Date;

private void limpar() throws Exception {
        //List<String> texto = new ArrayList();
        String arquivoT = caminho;
        File arquivo = new File(arquivoT);
    SimpleDateFormat formato = new SimpleDateFormat("ddMMyyyy");
    Date inicio = formato.parse((String) comboDia.getSelectedItem() + (String) comboMes.getSelectedItem() + (String) comboAno.getSelectedItem());
    Date fim = formato.parse((String) comboDia1.getSelectedItem() + (String) comboMes1.getSelectedItem() + (String) comboAno1.getSelectedItem());
    BufferedReader entrada = new BufferedReader(new FileReader(arquivo));
    StringBuilder texto = new StringBuilder();
    String linha = null;
    while ((linha = entrada.readLine()) != null) {
        String campoData = linha.substring(10, 18); // posiçoes correspondentes à data na linha do arquivo
        Date data = formato.parse(campoData);
        if (estaDentroDoPeriodo(data, inicio, fim)) {
            texto.append(campoData).append("\n");
        }
    }
    entrada.close();
    jTextArea1.setText(texto.toString());
}

private boolean estaDentroDoPeriodo(Date data, Date de, Date ate) {
    if (data.equals(de)) {
        return true;
    }
    if (data.equals(ate)) {
        return true;
    }
    return data.after(de) && data.before(ate);
}

e chamo com um botao:

try {
            limpar();
        } catch (Exception ex) {
            Logger.getLogger(Abrir.class.getName()).log(Level.SEVERE, null, ex);
        }

Você disse que as linhas eram assim "000000108325112017063601397184127846", nesse caso o campo data está entre as posições 10 e 18, se suas linhas são diferentes, você tem que ajustar o código pra extrair a data da posição certa.

Sim. Desculpe, na ultima linha tinha um outro formato de texto… Porém agora retornou apenas a data 0101208 e não veio com o restante da linha, precisava da linha toda, teria que usar o readLine()?

O exemplo que postei somente usa o readLine().