Lesen von Eingaben von der Konsole - Java
In Java gibt es drei Möglichkeiten, Eingaben von einer Konsole zu lesen:
-
BufferedReader + InputStreamReader (Classic)
-
Scanner (JDK 1.5)
-
System.console (JDK 1.6)
1. BufferedReader + InputStreamReader
Für erfahrene Java-Entwickler wird diese klassische Methode zum Lesen einer Systemeingabe fehlen.
ReadConsole.java
package com.example; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ReadConsole { public static void main(String[] args) { BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(System.in)); while (true) { System.out.print("Enter something : "); String input = br.readLine(); if ("q".equals(input)) { System.out.println("Exit!"); System.exit(0); } System.out.println("input : " + input); System.out.println("-----------\n"); } } catch (IOException e) { e.printStackTrace(); } finally { if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
Ausgabe
Enter something : old and classic input : old and classic ----------- Enter something : q Exit!
2. Scanner
In JDK 1.5 beginnt der Entwickler,java.util.Scanner
zum Lesen von Systemeingaben zu verwenden.
ReadConsole2.java
package com.example; public class ReadConsole2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (true) { System.out.print("Enter something : "); String input = scanner.nextLine(); if ("q".equals(input)) { System.out.println("Exit!"); break; } System.out.println("input : " + input); System.out.println("-----------\n"); } scanner.close(); } }
Ausgabe
Enter something : hello jdk 1.5 input : hello jdk 1.5 ----------- Enter something : scanner example input : scanner example ----------- Enter something : q Exit!
3. System.console
In JDK 1.6 beginnt der Entwickler, zur einfacheren und leistungsfähigerenjava.io.Console
-Klasse zu wechseln.
ReadConsole3.java
package com.example; public class ReadConsole3 { public static void main(String[] args) { while (true) { System.out.print("Enter something : "); String input = System.console().readLine(); if ("q".equals(input)) { System.out.println("Exit!"); System.exit(0); } System.out.println("input : " + input); System.out.println("-----------\n"); } } }
Ausgabe
Enter something : hello jdk 1.6 input : hello jdk 1.6 ----------- Enter something : console example input : cosole example ----------- Enter something : q Exit!
Note
DiesesSystem.console()
kann nur außerhalb der IDE verwendet werden, was für Tests etwas schwierig ist.