> Zjednodusme to na trivialnu otazku: Co ma urobit metoda read() bez
> parametrov, ak je zavolana na streame, z ktoreho uz boli skonzumovane
> vsetky dostupne bajty a nove este nedorazili, ale stream je stale
> otvoreny?
>
> J.
>   
Metoda read() ceka na nova data nebo konec streamu.
Tady je dukaz. Chova se to presne podle JavaDocu

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;

/**
 *
 * @author stepan
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        try {
            PipedOutputStream pos = new PipedOutputStream();
            Consumer c = new Consumer();
            pos.connect(c.pis);
            c.start();
           
            BufferedReader reader = new BufferedReader(new
InputStreamReader(System.in));
            String row;
            while((row=reader.readLine()).length()>0){
                pos.write(row.getBytes());
            }
            pos.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
   
    private static class Consumer extends Thread{
        private PipedInputStream pis = new PipedInputStream();

        @Override
        public void run() {
            int x;
            try {
                while(-1!=(x=pis.read())){
                   
System.out.println("Out>>>"+x+">>>"+String.valueOf((char)x));
                }
                System.out.println("KONEC");
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
       
    }

}

Odpovedet emailem