# Java Programming/Basic IO

* Topics:
* Preface
* Getting started
* Language fundamentals
* Classes and objects
* Aggregate
* Exceptions
* Concurrent Programming
* Javadoc & Annotations
* Designing user interfaces
* Advanced topics
Navigate User Interface topic:( v • d • e )
Basic I/O
Streams
Event handling
JavaBeans
Canvas
Graphics
Drawing basic shapes
Drawing complex shapes
Drawing text
Understanding gradients
Applets
Overview
User Interface
Event Listeners
Graphics and Media :
This section covers the Java platform classes used for basic input and output. But before we begin we need to have a concrete understanding of what input and output means in programming. To grasp this concept, think of the Java platform as a system.

## Understanding input and output

The Java platform is an isolated entity, a space on your OS in a way, where everything outside this system is its environment. The interaction between the system and its environment is a two-way dialog of sorts. Either the system receives messages from its environment, or it conveys its messages to the same. When a message is received by the system, it is called an input, its opposite is an output. On a whole, this communication is termed input/output abbreviated as I/O.
The following chapters are designed to introduce basic input and output in Java, including reading text input from the keyboard, outputting text to the monitor, and reading/writing files from the file system. More advanced user interaction using Graphics and Graphical User Interface (GUI) programs is taken up in the later section on Swing.
There are two packages for I/O: the older java.io package (does not support symbolic links) and the newer java.nio ("new io") package that has improved exception handling at java.nio.file.

### Simple Java Output: Writing to the Screen

Writing to the screen is very easy, and can be accomplished using one of two methods:
* Code section 9.1: Print "Hello world" without advancing to a new line
* System.out.print("Hello world");
* Output on the screen
* Hello world
* Code section 9.2: Print "Hello world" and advance to a new line
* System.out.println("Hello world");
* Output on the screen
* Hello world

### Simple Java Input: Inputting from the keyboard

As of version 5, Java provides a class in the java.util package called Scanner that simplifies keyboard input.
* Code section 9.3: Inputting with Scanner
* Scanner kbdIn = new Scanner(System.in); // Instantiating a new Scanner object
* System.out.print("Enter your name: "); // Printing out the prompt
* String name = kbdIn.nextLine; // Reading a line of input (until the user hits enter) from the keyboard
* // and putting it in a String variable called name
* System.out.println("Welcome, " + name); // Printing out welcome, followed by the user's name
* On the screen
* Enter your name: John Doe
* Welcome, John Doe
Alternatively, one could write a method to handle keyboard input:
* Code section 9.4: Line reader
* public String readLine {
* // Creates a new BufferedReader object
* BufferedReader x = new BufferedReader(new InputStreamReader(System.in));
* // Reads a line of input and returns it directly
* return x.readLine;
Note that the code above shouldn't be used in most applications, as it creates new Objects every time the method is run. A better alternative would be to create a separate class file to handle keyboard input.