# Java Notes

# Console I/O

Background. Java was designed for graphical user interfaces (GUI) and industrial strength file and Internet I/O. No attempt was made to have simple input and output facilities like C++'s `cin` and `cout`. This isn't a problem for big programs, but it makes small student examples large and awkward, requiring knowledge of conversion and exceptions from the beginning. In practice console input is rarely used, but programmers often use `System.out.println` for output during the debugging phase.

## Console I/O streams

There are three predefined I/O streams that use the console. These are equivalent to Unix standard input, error, and output streams.

       System.in     // an InputStream.
       System.out    // a PrintStream to write to console.
       System.err    // as above.

## Redirecting in the shell

[Needs to be written]

## Common Methods

[Needs to be written]

## Example

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
    // ConsoleIO.java - Reads and prints lines from/to console.
    // Fred Swartz - 2002-10-29

    import java.io.*;
    class ConsoleIO {
        public static void main(String[] args) throws IOException {
            // In order to read a line at a time from System.in,
            // which is type InputStream, it must be wrapped into
            // a BufferedReader, which requires wrapping it first
            // in an InputStreamReader.
            // Note the "throws" clause on the enclosing method (main).

            InputStreamReader isr = new InputStreamReader(System.in);
            BufferedReader input = new BufferedReader(isr);

            String line;  // holds each input line

            // Read and print lines in a loop.
            // Terminate with EOF: control-Z (Windows) or control-D (other)
            while ((line = input.readLine()) != null) {
                System.out.println(line);   // process each line
            }
        }
    }