This Java tutorial helps you understand the java.io.Console class which provides convenient methods for reading input and writing output to the standard input (keyboard) and output streams (display) in command-line (console) programs.

As the Java platform evolves over the years, it introduces the Console class (since Java 6) which is more convenient to work with the standard input/output streams than the traditional approach (using System.in and System.out).

Consider the following code before Java 6:

BufferedReader standardInput
	= new BufferedReader(new InputStreamReader(System.in));

System.out.print("Enter your name: ");
String name = standardInput.readLine();
System.out.println("Hello " + name);
Imagine you can shorten this piece of code:

System.out.print("Enter your name: ");
String name = standardInput.readLine();
System.out.println("Hello " + name);
by this one using the Console class:

String name = console.readLine("Enter your name: ");
console.printf("Hello %s ", name);
As you can see, we can both read input and write output using this class conveniently.

Now, let’s look at deeper into using this class.

 

1. Obtaining the Console instance

We obtain the unique instance of the Console class via the static method console() of the System class like this:

Console console = System.console();


However this method returns null if the program is running in non-interactive environment such as inside an IDE, so we need to check to ensure that the Console is actually available for use:

if (console == null) {
	System.out.println("Console is not supported");
	System.exit(1);
}
 

2. The Console’s methods for input and output

Then we can use the following methods for dealing with the standard input/output streams:

 

The method readPassword() is very interesting and useful, as it allows a program to read a password from the user securely:

In addition, all these methods are synchronized to guarantee the atomic completion of critical operations.

 

3. Using Console for Input and Output Example

The following program demonstrates how to use the Console class to read input data from the user and print output:

import java.io.*;
import java.util.*;

/**
 * This program demonstrates how to use the Console class to read input
 * and write output in command-line interface.
 *
 * @author www.codejava.net
 */
public class ConsoleInputOutputExample {

	public static void main(String[] args) throws IOException {
		Console console = System.console();

		if (console == null) {
			System.out.println("Console is not supported");
			System.exit(1);
		}

		String name = console.readLine("What's your name? ");
		String age = console.readLine("How old are you? ");
		String city = console.readLine("Where do you live? ");

		console.format("%s, a %s year-old man is living in %s", name, age, city);
	}
}
Run this program and enter some input like this:

What's your name? John
How old are you? 40
Where do you live? California
And you will see the result:

John, a 40 year-old man is living in California
 

4. Using Console for Reading Password Example

The following program demonstrates using the Console class to read login information from the user:

import java.io.*;
import java.util.*;

/**
 * This program demonstrates how to use the Console class to read a
 * password securely.
 *
 * @author www.codejava.net
 */
public class ConsoleLoginExample {

	public static void main(String[] args) throws IOException {
		Console console = System.console();

		if (console == null) {
			System.out.println("Console is not supported");
			System.exit(1);
		}

		console.printf("Welcome to Java Expert Program!\n");
		String name = console.readLine("Enter your name: ");
		char[] password = console.readPassword("Enter your password: ");

		char[] correctPassword = {'n', 'i', 'm', 'd', 'a'};

		if (Arrays.equals(password, correctPassword)) {
			console.printf("Thanks %s, you are logged in.\n", name);
		} else {
			console.printf("Sorry, you are denied.\n");
		}

		Arrays.fill(password, ' ');
		Arrays.fill(correctPassword, ' ');
	}
}
Pay attention to the last two statements: 

Arrays.fill(password, ' ');
Arrays.fill(correctPassword, ' ');
This clears the password arrays for security purpose.

Run this program, enter your name and password as ‘nimda’, you will see the following result:

Welcome to Java Expert Program!
Enter your name: John
Enter your password:
Thanks John, you are logged in.
 

API Reference:

 Console class Javadoc

 

Related Tutorials:

 

Other Java File IO Tutorials:


About the Author:

is certified Java programmer (SCJP and SCWCD). He started programming with Java in the time of Java 1.4 and has been falling in love with Java since then. Make friend with him on Facebook and watch his Java videos you YouTube.