Pour quoi la méthode read() retourne -1 ?
Résolu
estrellas6
Messages postés
37
Statut
Membre
-
estrellas6 Messages postés 37 Statut Membre -
estrellas6 Messages postés 37 Statut Membre -
Bonjour,
Cette méthode lit un octet sur le flot spécifié et retourne cette valeur sous la forme d'un entier. Il s'agit d'une lecture bloquante. Si la valeur retournée est -1, cela indique que l'on atteint la fin normale du flot.
Pour quoi cette méthode retourne un -1?
public abstract int read () throws IOException
Cette méthode lit un octet sur le flot spécifié et retourne cette valeur sous la forme d'un entier. Il s'agit d'une lecture bloquante. Si la valeur retournée est -1, cela indique que l'on atteint la fin normale du flot.
Pour quoi cette méthode retourne un -1?
A voir également:
- Pour quoi la méthode read() retourne -1 ?
- Ecran retourne - Guide
- Adobe reader pour pc - Télécharger - PDF
- A disk read error occurred ✓ - Forum Matériel & Système
- L'état de la memoire ne peut pas etre read - Forum Windows 10
- Article retourné par les douanes dhgate ✓ - Forum Consommation & Internet
2 réponses
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
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 ?
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.
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)
"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.