2011-05-29 5 views
0

J'ai un InputStream (les choses ce que l'utilisateur tape dans le Consol, System.in.read();)Lire InputStream juste à la première entrée?

Maintenant, je veux mettre ce InputStream plus tard dans une chaîne, il ressemble à quelque chose comme ça:

InputStream input = System.in; 


    StringBuffer out = new StringBuffer(); 
    byte[] b = new byte[4096]; 
    for (int n; (n = input.read(b)) != -1;) { 
     out.append(new String(b, 0, n)); 
    } 

    System.out.println(out); 

Je sais qu'il y a beaucoup de meilleures façons. Mais je veux finir celui-ci. Le seul problème est avec! = -1, cela n'arrive jamais. Quel est le int pour ENTRER? Donc mon pour les fins.

Thx!

+0

L'utilisation de 'Scanner' ou' BufferedReader' est-elle autorisée dans cette affectation? – BalusC

+0

oui c'est. J'ai essayé le lecteur tamponné, mais theres le même problème. Je peux dire readLine() mais il ne finit jamais ... – Lillipo

Répondre

0

Normalement [CONTROL] + [D] mettrait fin à l'entrée pour votre application, ce qui devrait vous renvoyer un -1 pour votre appel de méthode. Selon le système d'exploitation, vous pouvez essayer [ENTER] puis [CONTROL] + [D] et [ENTER] à nouveau.

+0

oui, c'est tout! J'ai juste besoin de CONTROL + D et ça finit (-1) – Lillipo

0

il devrait être l'une des 10 ou 13 valeurs en fonction de os.

+0

ne fonctionne pas:/Im en utilisant Linux x64 – Lillipo

+0

selon [cet aritcle] (http://www.velocityreviews.com/forums/t146788-how-do-i -detect-if-the-user-has-press-the-enter-key.html) vous ne pouvez pas le faire correctement – Ali1S232

2

cela est de la manière standard de le faire

Scanner scan = new Scanner(System.in); 
String line = scan.nextLine(); 
+0

je sais mais je veux utiliser la chaîne comme un inputtream et plus tard je veux lire cette inputtream et mettre comme une chaîne ... – Lillipo

Questions connexes