algún buffer en java que me permita leer hacia atrás? utilizo BufferedReader

Iniciado por kinos, 31 Julio 2009, 02:51 AM

0 Miembros y 1 Visitante están viendo este tema.

kinos

Hola, estoy cargando una pagina en un bufferedReader y leo caracter a caracter simplemente con:

char car = documento.read();// y me guarda el caracter

El problema es que quiero leer hacia atrás. ¿Cómo puedo hacer eso?

Nakp

pues te sientas de espaldas al monitor :rolleyes:

podrías ser más específico?
Ojo por ojo, y el mundo acabará ciego.

Danther

Si te refieres a leer la pagina empezando desde el ultimo caracter y hacia atras....
¿No te sería mas facil ir concatenando con readLine() y luego invertir la cadena con reverse()?
Luego si quieres puedes leer esa cadena caracter a caracter ^^

kinos

A ver, la cuestión es... voy leyendo de la pagina caracter a caracter con char documento.read() entonces cuando encuentro una almoadilla por ejemplo "#" me gustaría leer hacia atrás pero con el bufferedreader no se puede.
Una forma de hacerlo es:

vas leyendo, encuentras el comienzo de una cadena y guardas la posición con documento.mark() sigues leyendo, si encuentras el caracter que busco comienzo a leer la cadena de nuevo con documento.reset() --> así vuelve al comienzo de la cadena y la puedo leer entera.
sino encuentra # que siga leyendo hasta que encuentre el comienzo de otra cadena y guarde la posición con documento.mark() y sigues leyendo y tal.

Lo que me parece un incordio el guardar la posición cada dos por tres. Con el tema de archivos aleatorios me parece que puedes leer posicionadote en la pos. que te de la gana. Pero andar con archivos me parece un derroche de recursos...
nose que hacer..  :huh:

Danther

Me has dejado asi -> @.@
No entiendo a que te refieres con lo de "comienzo de otra cadena" ._.

Pero asi de forma general, puedes probar lo siguiente:

Vas leyendo caracter a caracter el documento, y lo vas guardando en un vector (importado de java.util.vector)
Luego ya puedes acceder a cada elemento como te de la gana, ya que estan numeraditos :3 (igual que en un array)
Sease, puedes quedarte con la posicion donde "comienza cada cadena", invertir el orden... lo que necesites

kinos

Jeje... me expreso como un libro quemado jaja..

Es que lo que comentas es redundante y si solo lo tuviese que hacer una vez lo de guardar en el vector pos no pasaba na... pero se me va a cansar el cpu  ;D

Lo bueno sería encontrar un buffer que fuese como lo de los archivos de acceso aleatorio.
Que te pones en la posición que te da la gana a leer.

archivo.seek(long pos) //te pone en la posicion que quieras

Danther

No se, mirate esto:
http://java.sun.com/j2se/1.4.2/docs/api/java/io/RandomAccessFile.html

De todas formas el vector (con array tambien valdria) actua de forma parecida ._.

Es muy versatil, por poner un ejemplo:

-Lees el documento
-Si encuentras el "comienzo de una cadena" empiezas a copiar chars en el vector
-Si llega al final de la cadena y no ha encontrado la almohadilla, borra los elementos antiguos del vector y sigue escribiendo los nuevos chars
-Si encuentra almohadilla, tienes la cadena guardada y ya haces lo que sea que quieras hacerle a la cadena