Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    34

    [file] bloccare ciclo con condizione su EOF

    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..

    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();
    				
    			}
    
    	}
    alla prima istruzione del wile, la read() non si dovrebbe andar nel catch se si ha esaurito il file?
    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!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [file] bloccare ciclo con condizione su EOF

    Originariamente inviato da stefo_11
    alla prima istruzione del wile, la read() non si dovrebbe andar nel catch se si ha esaurito il file?
    Documentazione di int read() di InputStreamReader:

    Returns:
    The character read, or -1 if the end of the stream has been reached
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.