Java - Console readPassword(String fmt, Object... args) method



Description

The Java Console readPassword(String fmt, Object... args) method provides a formatted prompt, then reads a password from the console with echoing disabled.

Declaration

Following is the declaration for java.io.Console.readPassword(String fmt, Object... args) method −

public char[] readPassword(String fmt, Object... args)

Parameters

  • fmt − A format string described in Format string syntax for the prompt text.

  • args − Arguments referenced by the format specifiers in the format string.

Return Value

This method returns a character array containing the password read from the console, not including the line termination character, or null if an end of stream has been reached.

Exception

  • IllegalFormatException − If a format string contains an illegal syntax, a format specifier that is incompatible with the given arguments, insufficient arguments given the format string, or other illegal conditions.

  • IOError − If an I/O error occurs.

Important Note

System.console() may return null in IDEs like Eclipse, NetBeans or IntelliJ. Run these programs from the command line (terminal) for proper execution.

Example - Usage of Console readPassword(String fmt, Object... args) method

The following example shows the usage of Java Console readPassword(String fmt, Object... args) method.

ConsoleDemo.java

package com.tutorialspoint;

import java.io.Console;

public class ConsoleDemo {
   public static void main(String[] args) {      
      Console console = null;
      String name = null;
      
      
      try {
         // creates a console object
         console = System.console();

         // if console is not null
         if (console != null) {
            
            // read line from the user input
            name = console.readLine("Enter your name:");
            
            // print username
            System.out.println("Name is: " + name);
            
            // read password into the char array
            char[] pwd = console.readPassword("Enter your password for %s: ", name);
            
            // print password length
            System.out.println("Password length: "+pwd.length);
         }    
         
      } catch(Exception ex) {
         // if any error occurs
         ex.printStackTrace();      
      }
   }
}

Console Interaction

Let us compile and run the above program, this will produce the following result −

Your Name: Master Programmer
Name is: Master Programmer
Enter Password: 
Password length: 6

Example - Password Input with a Formatted Prompt

The following example shows the usage of Java Console readPassword(String fmt, Object... args) method.

ConsoleDemo.java

package com.tutorialspoint;

import java.io.Console;

public class ConsoleDemo {
   public static void main(String[] args) {
      Console console = System.console();
      if (console == null) {
         System.out.println("No console available");
         return;
      }

      // Reading a password with a formatted prompt
      char[] passwordChars = console.readPassword("Enter your password for %s: ", "User123");
      String password = new String(passwordChars); // Convert char array to string

      // Display a confirmation message (never print passwords in real applications)
      console.printf("Password for User123 received successfully.\n");

      // Clear password from memory for security
      java.util.Arrays.fill(passwordChars, ' ');
   }
}

Console Interaction

Let us compile and run the above program, this will produce the following result −

Enter your password for User123:

Password for User123 received successfully.

Explanation

  • We use System.console() to obtain the Console instance.

  • If the console is unavailable (e.g., in an IDE), we print an error message and exit.

  • We use readPassword(String fmt, Object... args) to print a formatted prompt, inserting "User123" dynamically.

  • The password is read as a char[] (for better security than a String).

  • We convert it to a String for demonstration purposes (though in real applications, avoid storing passwords as String).

  • A confirmation message is displayed without revealing the password.

  • The password array is cleared using Arrays.fill() to remove sensitive data from memory.

Example - Asking for Admin Credentials

The following example shows the usage of Java Console readPassword(String fmt, Object... args) method.

ConsoleDemo.java

package com.tutorialspoint;

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

public class ConsoleDemo {
   public static void main(String[] args) {
      Console console = System.console();
      if (console == null) {
         System.out.println("No console available");
         return;
      }

      // Prompt for admin username
      String adminUser = console.readLine("Enter admin username: ");

      // Prompt for admin password with formatting
      char[] adminPassword = console.readPassword("Enter password for admin user %s: ", adminUser);

      // Validate input (for demonstration purposes, we assume a hardcoded password)
      String correctPassword = "SecureAdmin123";
      if (new String(adminPassword).equals(correctPassword)) {
         console.printf("Access granted, %s!\n", adminUser);
      } else {
         console.printf("Access denied!\n");
      }

      // Clear password from memory
      Arrays.fill(adminPassword, ' ');
   }
}

Console Interaction

Let us compile and run the above program, this will produce the following result −

Enter admin username: Admin
Enter password for admin user Admin:

Access granted, Admin!

Explanation

  • The program prompts for an admin username using readLine().

  • It then prompts for a password, inserting the username dynamically into the message.

  • The input password is compared to a hardcoded correct password ("SecureAdmin123") for authentication.

  • The result (access granted or denied) is displayed.

  • The password array is cleared from memory for security.

java_io_console.htm
Advertisements