Pourquoi ne peut-on pas lire les caractères un à un à partir du Système.dans?

Le programme suivant imprime chaque caractère écrit standard, mais seulement après qu'une nouvelle ligne a été écrit (au moins sur mon système!).

public class Test {
    public static void main(String[] args) throws java.io.IOException {
        int c;
        while ((c = System.in.read()) != -1)
            System.out.print((char) c);
    }
}

Cela empêche les gens d'écrire des trucs comme "Appuyez sur une touche pour continuer" et les forces de quelque chose comme "Appuyez sur entrée pour continuer."

  • Qu'est-ce que la raison sous-jacente pour cela?
  • Est-il une limitation de Java?
  • Est ce comportement dépendant du système (je suis sur Ubuntu)? Comment ça fonctionne sur Mac? Windows?
  • Est dépendant du terminal en particulier je lance l'application dans? (Pour moi, il se comporte comme cela dans Eclipse et dans gnome-terminal)
  • Est-il une solution?
InformationsquelleAutor aioobe | 2010-10-24