Relendo um BufferedReader

3 respostas
D

Ola pessoall…gostaria de uma informação…

como eu faço para reutilizar um BufferedReader…ou seja…voltar para sua posição inicial…digamos…o primeiro “registro”…

eu tentei com o metodo “reset()”…e o "mark(int)"mas nao consegui…

eu fiz assim eu leio ele normamente ate o final…depois quando o meu “readLine() ==null”… eu faço o seguinte :

reader.mark(int) // aqui é zero ou 1??? na documentação nao fala!!! =(

e depois quando eu quero reutiliza-lo eu faço…

reader.reset();

e queria poder reutiliza-lo.só que ele aborta…ou seja…no primeiro teste se o readLine == null…ele ja sai…

parece que ele nao esta voltando…

como que faz isso… ou …o que eu estou fazendo de errado??

alguem poderia postar um exempo para mim??

valeu pessoal!!!

3 Respostas

D

pessoal…to precisando meio urgente disso e nao to conseguindo… :lol:

ninguem??? :cry:

valeu! :smiley:

Ironlynx

Nunca utilizei mark e reset,mas posso dizer uma coisa:
Do modo q vc tá fazendo não funciona!
mark recebe como parametro readAheadLimit q é o número de chars
q pode ser lido,na verdade,o limite de seu inputbuffer.
Se usar algo maior do q seu input um novo buffer será disponibilizado cujo tamanho poderá ser maior q o limite…
Vc tá marcando readLine() ==null, q parâmetro será passado a
mark() ?
Ou seja, o buffer está vazio…
Bom estou só teorizando pois nunca reutilizei buffer antes(e posso
estar completamente errado!!!)
Mas como vc tá precisando disso urgente…

Ironlynx

a verdadeira documentação(existe as q ignoram o parâmetro!):
public void mark(int readAheadLimit)
throws IOException

Mark the present position in the stream. Subsequent calls to reset() will attempt to reposition the stream to this point.

<blockquote>readAheadLimit - Limit on the number of characters that may be read while still preserving the mark. After reading this many characters, attempting to reset the stream may fail. A limit value larger than the size of the input buffer will cause a new buffer to be allocated whose size is no smaller than limit. Therefore large values should be used with care.


Será disparada uma IllegalArgumentException se o
readAheadLimit<0

Criado 30 de setembro de 2003
Ultima resposta 1 de out. de 2003
Respostas 3
Participantes 2