In Java, there are three ways to read input from a console :
- System.console (JDK 1.6)
- Scanner (JDK 1.5)
- BufferedReader + InputStreamReader (Classic)
1. System.console
Since JDK 1.6, the developer starts to switch to the more simple and powerful java.io.Console
class.
JavaConsole.java
package com.favtuts.io.console; import java.io.Console; public class JavaConsole { public static void main(String[] args) { Console console = System.console(); String input = ""; while (!"q".equalsIgnoreCase(input)) { System.out.print("Enter something (q to quite): "); input = console.readLine(); System.out.println("input : " + input); } System.out.println("bye bye!"); } }
The System.console()
will return null in IDE, running the class in console or terminal manually.
~/projects/target/classes$ java com.favtuts.io.console.JavaConsole
Enter something (q to quite): hello 123
input : hello 123
Enter something (q to quite): hello Java
input : hello Java
Enter something (q to quite): favtuts
input : favtuts
Enter something (q to quite): q
input : q
bye bye!
More Java System.console()
examples.
package com.favtuts.io.console; import java.io.Console; public class JavaSample { public static void main(String[] args) { // jdk 1.6 Console console = System.console(); System.out.print("Enter your name: "); String name = console.readLine(); System.out.println("Name is: " + name); System.out.print("Enter your password: "); // Reads a password from the console with echoing disabled char[] password = console.readPassword(); String passwordStr = String.valueOf(password); // char[] to String; System.out.println("Password is: " + passwordStr); } }
Output
Enter your name: favtuts
Name is: favtuts
Enter your password:
Password is: 123456
2. Scanner
Before JDK 1.6, this is the Scanner
way to read input from the console.
JavaScanner.java
package com.favtuts.io.console; import java.util.Scanner; public class JavaScanner { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String input = ""; while (!"q".equalsIgnoreCase(input)) { System.out.print("Enter something (q to quite): "); input = scanner.nextLine(); System.out.println("input : " + input); } System.out.println("bye bye!"); } }
Output
Enter something (q to quite): hello favtuts
input : hello favtuts
Enter something (q to quite): jdk 1.5
input : jdk 1.5
Enter something (q to quite): exit
input : exit
Enter something (q to quite): q
input : q
bye bye!
P.S More Java Scanner examples examples.
3. BufferedReader + InputStreamReader
In the old days, JDK 1.1, we use BufferedReader + InputStreamReader
to read input from the console.
JavaBufferedReaderClassic.java
package com.favtuts.io.console; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class JavaBufferedReaderClassic { public static void main(String[] args) { BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(System.in)); String input = ""; while (!"q".equalsIgnoreCase(input)) { System.out.print("Enter something (q to quite): "); input = br.readLine(); System.out.println("input : " + input); } System.out.println("bye bye!"); } catch (IOException e) { e.printStackTrace(); } finally { if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
JDK 1.7 try-with-resources
package com.favtuts.io.console; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class JavaBufferedReader { public static void main(String[] args) { // jdk 1.7 try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { String input = ""; while (!"q".equalsIgnoreCase(input)) { System.out.print("Enter something (q to quite): "); input = br.readLine(); System.out.println("input : " + input); } System.out.println("bye bye!"); } catch (IOException e) { e.printStackTrace(); } } }
Download Source Code
$ git clone https://github.com/favtuts/java-core-tutorials-examples
$ cd java-io/console