si la méthode de lecture lit un octet de données du flux d'entrée, lorsqu'il doit lire un caractère, est-il lu deux fois octet par octet? comme un char est de 2 byes?Est-ce que Java.io.InputStream.read() Méthode lit chaque type de données comme octet?
Répondre
InputStream
fonctionne sur des octets. C'est l'abstraction d'E/S sous-jacente en Java. Il peut lire un seul octet ou une séquence d'octets, en fonction des demandes de l'appelant. Mais il ne sait rien sur les caractères, donc il ne peut pas, à lui seul, décider de lire deux octets pour un personnage. Un Reader
devrait le demander.
Si vous devez lire des caractères, utilisez Reader
pour les lire depuis InputStream
.
(De même, pour lire des objets Java sérialisés, vous pouvez utiliser ObjectInputStream
, qui les lit à nouveau de la InputStream
. Vous pouvez aussi utiliser Scanner
pour lire une variété d'entrées de numéros en texte, encore une fois d'un InputStream
.)
Le but de cette abstraction est la séparation des responsabilités -
- Le
InputStream
fournit un flux d'octets et gère toute logique (lecture de fichiers/réseau/...) sous-jacent. - Le
Reader
convertit le flux d'octets en flux de caractères et ne se soucie pas de l'origine des données.
Selon la documentation Oracle disponible en ligne https://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#read() il lit Tableau d'octets
Ou un seul octet. – EJP
pourquoi utilisez-vous pas readChar dans la classe DataInputStream? – tommybee
Toutes les données sont des octets, et 'read()' renvoie un seul octet. – Kayaman
Il * n'a pas * à "lire un" char ". Il est spécifié de lire les octets, et c'est ce qu'il fait. Votre question n'a pas de sens. – EJP