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

drepou Messages postés 3 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 17 avril 2003 - 15 avril 2003 à 13:01
drepou Messages postés 3 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 17 avril 2003 - 17 avril 2003 à 17:28
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

CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
16 avril 2003 à 20:12
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 :)
0
drepou Messages postés 3 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 17 avril 2003
17 avril 2003 à 17:28
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
0
Rejoignez-nous