salve!
sto cercando in diversi modi di ottenere quanto descritto nel titolo ma nulla..
il check sul ready() non fa neppure entrare nel while, mentre apparentemente l'eof non viene mai raccolto dall'apposita EOFException, questo e' un pezzo del codice incriminato..
alla prima istruzione del wile, la read() non si dovrebbe andar nel catch se si ha esaurito il file?codice:public class DataReader extends Reader { private InputStreamReader in; . . . public String readString() throws IOException { StringBuffer buf = new StringBuffer(); boolean go = true; try { while(true) { int x = in.read(); char ch = (char)x; go = (ch!='|'); System.out.println(isNotEOF()); System.out.println(ch); if(go) buf.append(ch); else return buf.toString(); } } catch(EOFException e) { EOF = "EOF"; return buf.toString(); } }
nel file che vien letto ci sono stringhe separate da un | come si intuisce, il file termina quindi con un |.
letto quest'ultimo, il metodo ritorna la stringa risultato della lettura bufferizzata, e una volta tornato a chiamare il metodo (che e' appunto chiamato in un altro ciclo regolato dal controllo (EOF.equals("EOF")) essendo dopo l'ultimo | cio' che si legge e' l'eof..ma non si va nel catch..(cosa confermata dalle println inserite qua e la, isNotEof ritorna sempre true e la print del ch ritorna tre quadratini barrati che francamente non avevo ancora mai incontrato..)
Perche'..?
:master:
Grazie mille!![]()

Rispondi quotando