Foro de elhacker.net

Programación => Java => Mensaje iniciado por: kinos en 31 Julio 2009, 02:51 am



Título: algún buffer en java que me permita leer hacia atrás? utilizo BufferedReader
Publicado por: kinos en 31 Julio 2009, 02:51 am
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?


Título: Re: algún buffer en java que me permita leer hacia atrás? utilizo BufferedReader
Publicado por: Nakp en 31 Julio 2009, 05:47 am
pues te sientas de espaldas al monitor :rolleyes:

podrías ser más específico?


Título: Re: algún buffer en java que me permita leer hacia atrás? utilizo BufferedReader
Publicado por: Danther en 31 Julio 2009, 11:12 am
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 ^^


Título: Re: algún buffer en java que me permita leer hacia atrás? utilizo BufferedReader
Publicado por: kinos en 31 Julio 2009, 21:21 pm
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:


Título: Re: algún buffer en java que me permita leer hacia atrás? utilizo BufferedReader
Publicado por: Danther en 31 Julio 2009, 21:31 pm
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


Título: Re: algún buffer en java que me permita leer hacia atrás? utilizo BufferedReader
Publicado por: kinos en 1 Agosto 2009, 02:40 am
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


Título: Re: algún buffer en java que me permita leer hacia atrás? utilizo BufferedReader
Publicado por: Danther en 1 Agosto 2009, 22:04 pm
No se, mirate esto:
http://java.sun.com/j2se/1.4.2/docs/api/java/io/RandomAccessFile.html (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