The available()
method tests how many bytes are
ready to be read from the stream without blocking.
public int available() throws IOException
Echo
that uses available()
to test
how many bytes are ready to be read, creates an array of exactly
that size, reads the bytes into the array, then converts the
array to a String
and prints the
String
.
import java.io.*;
public class EfficientEcho {
public static void main(String[] args) {
echo(System.in);
}
public static void echo(InputStream in) {
try {
while (true) {
int n = in.available();
if (n > 0) {
byte[] b = new byte[n];
int result = in.read(b);
if (result == -1) break;
String s = new String(b);
System.out.print(s);
} // end if
} // end while
} // end try
catch (IOException e) {
System.err.println(e);
}
}
}