...
Code Block | ||
---|---|---|
| ||
public final class InputLibrary { public static char getChar() throws EOFException { BufferedInputStream in = new BufferedInputStream(System.in); // wrapper int input = in.read(); if (input == -1) { throw new EOFException(); } // Down casting is permitted because InputStream guarantees read() in range // 0..255 if it is not -1 return (char)input; } public static void main(String[] args) { try { // Either redirect input from the console or use // System.setIn(new FileInputStream(""input.dat"")); System.out.print(""Enter first initial: ""); char first = getChar(); System.out.println(""Your first initial is "" + first); System.out.print(""Enter last initial: ""); char last = getChar(); System.out.println(""Your last initial is "" + last); } catch(EOFException e) { System.out.println("ERROR""ERROR"); // foward to handler } } } |
...
Code Block | ||
---|---|---|
| ||
public final class InputLibrary { private static BufferedInputStream in = new BufferedInputStream(System.in); public static char getChar() throws EOFException { int input = in.read(); if (input == -1) { throw new EOFException(); } in.skip(1); // This statement is now necessary to go to the next line // The noncompliant code example deceptively worked without it return (char)input; } public static void main(String[] args) { try { System.out.print(""Enter first initial: ""); char first = getChar(); System.out.println(""Your first initial is "" + first); System.out.print(""Enter last initial: ""); char last = getChar(); System.out.println(""Your last initial is "" + last); } catch(EOFException e) { System.out.println("ERROR""ERROR"); } } } |
It may appear that the mark()
and reset()
methods of BufferedInputStream
would replace the read bytes but this idea is deceptive, for, these methods provide look-ahead by operating on the internal buffers and not directly on the underlying stream.
...
FIO34-J. Do not create temporary files in shared directories 09. Input Output (FIO) FIO37-J. Do not expose buffers created using the wrap() or duplicate() methods to untrusted code