> 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();
}
}
}
}