[kaffe] InputStream#available() for System.in throws IOException

Ito Kazumitsu kaz at maczuka.gcd.org
Mon Aug 29 09:54:52 PDT 2005


Hi,

The program attached below throws java.io.IOException when run with
current CVS version of Kaffe.

Case 1: Terminal input
$ kaffe TestBufferedReader
aaaa
java.io.IOException: No such file or directory
   at gnu.java.nio.channels.FileChannelImpl.available (FileChannelImpl.java)
   at java.io.FileInputStream.available (FileInputStream.java:165)
   at java.io.FilterInputStream.available (FilterInputStream.java:129)
   at java.io.BufferedInputStream.read (BufferedInputStream.java:276)
   at java.io.FilterInputStream.read (FilterInputStream.java:173)
   at java.io.InputStreamReader.read (InputStreamReader.java:395)
   at java.io.BufferedReader.fill (BufferedReader.java:373)
   at java.io.BufferedReader.readLine (BufferedReader.java:475)
   at TestBufferedReader.main (TestBufferedReader.java:12)
java.io.IOException: No such file or directory

Case 2: Pipe
$ echo aaaa | kaffe TestBufferedReader     
java.io.IOException: No such file or directory
   at gnu.java.nio.channels.FileChannelImpl.available (FileChannelImpl.java)
   at java.io.FileInputStream.available (FileInputStream.java:165)
   at java.io.FilterInputStream.available (FilterInputStream.java:129)
   at java.io.BufferedInputStream.read (BufferedInputStream.java:276)
   at java.io.FilterInputStream.read (FilterInputStream.java:173)
   at java.io.InputStreamReader.read (InputStreamReader.java:395)
   at java.io.BufferedReader.fill (BufferedReader.java:373)
   at java.io.BufferedReader.readLine (BufferedReader.java:475)
   at TestBufferedReader.main (TestBufferedReader.java:12)
java.io.IOException: No such file or directory

Case 3: File input - OK
$ kaffe TestBufferedReader <TestBufferedReader.java 
$

Case 4: Here document - OK
$ kaffe TestBufferedReader <<EOF
> aaaa
> EOF
$

This error occurs on both FreeBSD and Linux.
Slight differences among operating systems are:

(1) On Linux 2.6.7-co-0.6.2, the message of the IOException is
    "Success" instead of "No such file or directory".

(2) On Linux 2.4.18-3, instead of throwing IOException, the program
    seems to go into a deadlock. But giving an argument to the
    program, we see the same IOException.

$ echo aaaa | kaffe TestBufferedReader US-ASCII
java.io.IOException: No such file or directory
   at gnu.java.nio.channels.FileChannelImpl.available (FileChannelImpl.java)
   at java.io.FileInputStream.available (FileInputStream.java:165)
   ...

And here is the program for testing.
import java.io.*;

public class TestBufferedReader {

    public static void main(String[] args) throws Exception {
      try {
	BufferedReader rdr = new BufferedReader(
            (args.length > 0 ?
              new InputStreamReader(System.in, args[0]) :
              new InputStreamReader(System.in)));
        while (true) {
            String s = rdr.readLine();
            if (s == null) break;
        }
      }
      catch (Exception e) {
        e.printStackTrace();
        throw e;
      }
    }
}



More information about the kaffe mailing list