Clone em BufferedReader

Olá galera,

Estou com um problema, pois preciso criar alguns objetos que utilizam um BufferedReader, porem na classe que vou unir a criacao de todas eu perco ele.
Exemplo

BufferedReader bf = new BufferedReader(input);

Item1 it1 = new Item1(bf);
it1.rotina();

// O problema é aqui, pois o bf ja pasou todas as linhas na rotina, pois eu usei como referencia.


Item2 it2 = new Item2(bf);
it2.rotina();

A duvida é como posso clonar um BufferedReader? Não tenho acesso a este metódo…

Obrigado

Olá.
Teoricamente vc não precisaria usar clone. Depende do que esse objeto Item faz com o BufferedReader.
Desde que vc não chame o método close(), vc poderia continuar usando a mesma instância.

[quote=juno.rr]Olá.
Teoricamente vc não precisaria usar clone. Depende do que esse objeto Item faz com o BufferedReader.
Desde que vc não chame o método close(), vc poderia continuar usando a mesma instância.[/quote]

Eu leio todas as linhas até que a linha seja nula, e quando passo ele novamente, ja vai na linha nula.

Ola,

Pergunta, por que vc não lê o arquivo uma única vez, e armazena o que leu num list da vida… e depois acessa este list? o acesso a arquivos é muito, muito lento.

E respondendo a seua pergunta… vc não pode clonar um reader… vc pode abrir outro, ou talves invocar o metodo reset()…

Entendi,
então vc você utiliza o método mark( int ) no início do input (byte 0) e quando for utilizar novamente o BufferedReader, chama o método reset(), por exemplo:

BufferedReader bf = new BufferedReader(input);

bf.mark(Integer.MAX_VALUE);

Item1 it1 = new Item1(bf);  
it1.rotina();  

bf.reset();

Item2 it2 = new Item2(bf);  
it2.rotina();  

Ou vc pode utilizar a dica do amigo acima, é muito mais rápido, a não ser que o stream lido seja muito grande (mas muito mesmo) e vá consumir muito memória.

Pessoal, apliquei a lista de string.

Foi uma idéia muito boa do BrunoCarlo, pois deixei de controlar a linha dentro de cada classe, o que deixou o código mais limpo.
Só achei que ficou um pouco mais lento.

Muito obrigado mesmo pessoal.

Abraço

Sério?! estranho… era para ficar mais rápido…