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