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
BufferedReaderbf=newBufferedReader(input);Item1it1=newItem1(bf);it1.rotina();// O problema é aqui, pois o bf ja pasou todas as linhas na rotina, pois eu usei como referencia.Item2it2=newItem2(bf);it2.rotina();
A duvida é como posso clonar um BufferedReader? Não tenho acesso a este metódo…
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.
Fmgasparino
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.
Eu leio todas as linhas até que a linha seja nula, e quando passo ele novamente, ja vai na linha nula.
B
BrunoCarlo
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()…
juno.rr
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:
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.
Fmgasparino
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.