How do I use Console class to read user input?

In the previous example we use the Scanner class to read user input. In this example we use another new class introduced in the JDK 1.6, the java.io.Console class.

The Console class provide a method for reading password. When reading the password the user input will be hidden or not shown in the console screen. And it will return an array of char as the return type.

package org.kodejava.example.io;

import java.io.Console;
import java.util.Arrays;

public class ConsoleDemo {

    public static void main(String[] args) {
        //
        // Get a console object, console can be null if not available.
        //
        Console console = System.console();

        if (console != null) {
            //
            // Read username from the console
            //
            String username = console.readLine("Username: ");

            //
            // Read password, the password will not be echoed to the
            // console screen and returned as an array of characters.
            //
            char[] password = console.readPassword("Password: ");

            if (username.equals("admin")
                    && String.valueOf(password).equals("secret")) {
                console.printf("Welcome to Java Application %1$s.n",
                        username);

                //
                // Clear the password after validation successful
                //
                Arrays.fill(password, ' ');
            } else {
                console.printf("Invalid username or password.n");
            }
        } else {
            System.out.println("Console is not available.");
        }
    }
}

Wayan

Programmer, runner, recreational diver, live in the island of Bali, Indonesia. Mostly programming in Java, creating web based application with Spring Framework, Hibernate / JPA. Support me by donating >> here <<.

Leave a Reply