Pour quoi la méthode read() retourne -1 ?
Résolu/Fermé
estrellas6
Messages postés
36
Date d'inscription
vendredi 26 juillet 2013
Statut
Membre
Dernière intervention
7 mars 2014
-
22 août 2013 à 16:05
estrellas6 Messages postés 36 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 7 mars 2014 - 22 août 2013 à 21:04
estrellas6 Messages postés 36 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 7 mars 2014 - 22 août 2013 à 21:04
A voir également:
- Pour quoi la méthode read() retourne -1 ?
- Ecran retourne - Guide
- Télécharger adobe reader pour pc - Télécharger - PDF
- Format read - Forum Autoradio
- La méthode range de l'objet worksheet a échoué ✓ - Forum VB / VBA
- Article retourné par les douanes dhgate ✓ - Forum Consommation & Internet
2 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 22/08/2013 à 19:05
Modifié par KX le 22/08/2013 à 19:05
Il faudrait savoir exactement d'où vient cette méthode read, dans tous les cas il faut se référer à la documentation. Par exemple InputStream.read()
En général quand -1 est la valeur spécifiant la fin de flux c'est soit parce que dans les autres cas ça renvoie un octet (valeur entre 0 et 255), soit parce que ça renvoie le nombre d'octets lus (dans le cas où on passe un tableau en paramètre)
La confiance n'exclut pas le contrôle
En général quand -1 est la valeur spécifiant la fin de flux c'est soit parce que dans les autres cas ça renvoie un octet (valeur entre 0 et 255), soit parce que ça renvoie le nombre d'octets lus (dans le cas où on passe un tableau en paramètre)
La confiance n'exclut pas le contrôle
estrellas6
Messages postés
36
Date d'inscription
vendredi 26 juillet 2013
Statut
Membre
Dernière intervention
7 mars 2014
22 août 2013 à 19:44
22 août 2013 à 19:44
le (-1) est ce que c la suite d'une chaîne comme (0,1,2,3,4,5...) ou bien c automatique , quand c la fin d'une chaîne il renvoie le -1 ?
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
22 août 2013 à 20:03
22 août 2013 à 20:03
Au risque de me répéter cela dépend du contexte. En l'occurrence la méthode read() que tu nous indique est abstraite, c'est à dire qu'il n'y a pas de code derrière. C'est aux classes qui implémenteront cette méthode de décider à quoi cela correspond.
Sans savoir quel contexte exact il y a derrière, la seule indication que nous donne -1 c'est que le traitement est terminé et qu'il faut arrêter de faire des read.
Par exemple pour la lecture d'un fichier, on aura -1 quand on a atteint la fin du fichier, mais si on lit du texte au clavier on n'aura jamais -1, chaque situation est différente.
Sans savoir quel contexte exact il y a derrière, la seule indication que nous donne -1 c'est que le traitement est terminé et qu'il faut arrêter de faire des read.
Par exemple pour la lecture d'un fichier, on aura -1 quand on a atteint la fin du fichier, mais si on lit du texte au clavier on n'aura jamais -1, chaque situation est différente.
estrellas6
Messages postés
36
Date d'inscription
vendredi 26 juillet 2013
Statut
Membre
Dernière intervention
7 mars 2014
22 août 2013 à 20:28
22 août 2013 à 20:28
quand on écrit par exemple
et une autre question qu'est ce que tu veux dire par une lecture du texte au clavier ?
try{ while((byteLu=fis.read())!=-1){ System.out.println(byteLu); } }
et une autre question qu'est ce que tu veux dire par une lecture du texte au clavier ?
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 22/08/2013 à 20:39
Modifié par KX le 22/08/2013 à 20:39
Et bien par exemple je reprend ton code, et je donne à "fis" la valeur System.in
Sauf qu'ici il n'y aura jamais de fin (à part créer une IOException sur le clavier, mais faut le vouloir)
int byteLu; InputStream fis = System.in; try { while((byteLu=fis.read())!=-1) System.out.println(byteLu); } catch (IOException e) { e.printStackTrace(); }
Sauf qu'ici il n'y aura jamais de fin (à part créer une IOException sur le clavier, mais faut le vouloir)
estrellas6
Messages postés
36
Date d'inscription
vendredi 26 juillet 2013
Statut
Membre
Dernière intervention
7 mars 2014
22 août 2013 à 20:51
22 août 2013 à 20:51
dans mon code fis est de type FileInputStream .
et ton code ne donne aucun résultat !
et ton code ne donne aucun résultat !
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
22 août 2013 à 20:58
22 août 2013 à 20:58
"ton code ne donne aucun résultat !"
Mon code, c'est le tien, et il fonctionne ! Mais puisqu'il lit le clavier, il faut que tu tapes un texte sur ton clavier et que tu appuies sur entrée pour que cela fasse quelque chose...
"dans mon code fis est de type FileInputStream "
Dans ce cas, rapporte toi à la documentation de FileInputStream.read() :
Mon code, c'est le tien, et il fonctionne ! Mais puisqu'il lit le clavier, il faut que tu tapes un texte sur ton clavier et que tu appuies sur entrée pour que cela fasse quelque chose...
"dans mon code fis est de type FileInputStream "
Dans ce cas, rapporte toi à la documentation de FileInputStream.read() :
Returns: the next byte of data, or -1 if the end of the file is reached.