System.in.read() ne retourne jamais -1 ????

Signaler
Messages postés
3
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
17 avril 2003
-
Messages postés
3
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
17 avril 2003
-
bonjour je cherche a faire un programme qui lit depuis un inputstream des donnees pour les reutiliser ensuite je test avec le in standart mais je ne sort jamais de ma boucle je ne comprend pas pourquoi :

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.* ;
import java.io.*;
import java.lang.Runtime;

public class Toto {

public static void main(String argv[]){

try {
int c;
while((c = System.in.read()) != -1) { // ici on sort jamais ????? pourquoi
System.out.print(c);
}
} catch(IOException exc) {
exc.printStackTrace(); // En fait exc.printStackTrace(System.err);
}

}
}

exemple d'exec :

sur le clavier > hello
resultat >10410110810811110 <bloque ici ne sort pas !!!

parce que l'union fais la force

2 réponses

Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
1
Si tu fais:
java Toto <fichier.txt
System.in.read() retounera -1 à la lecture de la fin du fichier "fichier.txt".
Mais s'il s'agit de l'entrée standard (clavier) le flux n'a pas de fin, la méthode read() ne retournera jamais -1. Ce principe est vrai quelque soit le langage employé (en C par exemple).
Il faut que tu teste une séquence de fin de saisie:

...
while( System.in.read() = = 13 )
...

sort de la boucle si tu tape sur la touche entrée.

Core Breaker :)
Messages postés
3
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
17 avril 2003

ok donc si je comprend bien je peut toujour me brosser pour par exemple executer un telnet dans un process.exec
je n'arriverai jamais a utiliser la method read sur le getinputstream du process
car comme le stdout n'a jamais de fin je ne pourrai jamais sortir de mon read pour rediriger l'affichage du telnet dans un jtextarea par exemple sauf si je fais un read(1 millons) en priant pour que le telnet ne revoit pas plus d'un millons de caractere lors d'un commande

pas cool