Comment lire les entrées de la console - Java

Comment lire l'entrée de la console - Java

En Java, il existe 3 façons de lire les entrées d'une console:

  1. BufferedReader + InputStreamReader (classique)

  2. Scanner (JDK 1.5)

  3. System.console (JDK 1.6)

1. BufferedReader + InputStreamReader

Pour les développeurs Java expérimentés, vous manquerez cette façon classique de lire une entrée système.

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();
                }
            }
        }

    }

}

Sortie

Enter something : old and classic
input : old and classic
-----------

Enter something : q
Exit!

2. Scanner

Dans JDK 1.5, le développeur commence à utiliserjava.util.Scanner pour lire l'entrée système.

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();

    }

}

Sortie

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

Dans JDK 1.6, le développeur commence à passer à la classejava.io.Console plus simple et plus puissante.

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");
        }

    }

}

Sortie

Enter something : hello jdk 1.6
input : hello jdk 1.6
-----------

Enter something : console example
input : cosole example
-----------

Enter something : q
Exit!

Note
CeSystem.console() n'est utilisable qu'en dehors de l'IDE, un peu difficile pour les tests.