web-dev-qa-db-fra.com

Flux d'octets et flux de caractères

Veuillez expliquer quels sont les flux Byte et les flux de caractères. Qu'est-ce que cela signifie exactement? Un document Microsoft Word est-il orienté octets ou caractères?

Merci 

38
JavaUser

Un flux est un moyen d'accéder séquentiellement à un fichier. Un flux d'octets accède au fichier octet par octet. Un flux d'octets convient à tout type de fichier, mais pas tout à fait aux fichiers texte. Par exemple, si le fichier utilise un codage Unicode et qu'un caractère est représenté avec deux octets, le flux d'octets les traitera séparément et vous devrez effectuer la conversion vous-même.

Un flux de caractères lira un fichier caractère par caractère. L'encodage du fichier doit être attribué à un flux de caractères pour fonctionner correctement.

Bien qu'un document Microsoft Word contienne du texte, il est impossible d'y accéder avec un flux de caractères (ce n'est pas un fichier texte). Vous devez utiliser un flux d'octets pour y accéder.

48
kgiannakakis

ByteStreams:

De la page de documentation Oracle sur flux d'octets :

Les programmes utilisent des flux d'octets pour effectuer des entrées et des sorties d'octets de 8 bits. Toutes les classes de flux d'octets sont issues de InputStream et OutputStream.

enter image description here

Quand utiliser:

Les flux d'octets ne doivent être utilisés que pour les entrées/sorties les plus primitives

Quand ne pas utiliser:

Vous ne devez pas utiliser le flux Byte pour lire Flux de caractères

par exemple. Lire un fichier texte

Flux de caractères:

À partir de la page de documentation Oracle sur flux de caractères :

La plate-forme Java stocke les valeurs de caractères à l'aide de conventions Unicode. Le flux de caractères I/O traduit automatiquement ce format interne vers et à partir du jeu de caractères local.

Toutes les classes de flux de caractères sont issues de Reader et Writer.

Les flux de caractères sont souvent des "wrappers" pour les flux d'octets. Le flux de caractères utilise le flux d'octets pour effectuer les E/S physiques, tandis que le flux de caractères gère la traduction entre les caractères et les octets.

Il existe deux flux de "pont" d'octet à caractère à usage général: InputStreamReader et OutputStreamWriter.

Quand utiliser:

Pour lire des flux de caractères à partir de Socket ou File de caractères

En résumé:

Byte stream lit et écrit un octet à la fois. Nous devons éviter l'utilisation du flux d'octets tout en traitant des données plus sophistiquées. 

Character Stream et les autres flux disponibles doivent être utilisés pour gérer des données sophistiquées. 

10
Ravindra babu

1. Les caractères sont liés au type de données. Seuls les types de chaîne ou de caractères peuvent être lus, alors que les octets orientés ne sont liés à aucun type de données. Les données de tout type de données peuvent être lues (à l'exception des chaînes), il vous suffit de les spécifier.

2.Le caractère est orienté caractère par caractère, tandis que celui par octet est lu par octet.

3. Les flux orientés caractères utilisent un schéma de codage de caractères (UNICODE) tandis que les octets orientés n'utilisent aucun schéma de codage

4. Les flux orientés caractères sont également appelés flux de lecture et écriture Les flux orientés octets sont appelés flux de données-flux d'entrée de données et flux de sortie de données 

4
Urjit

Lire ceci . Il vous indique la différence entre les octets et les caractères (ainsi que des tas d'autres choses utiles)

3
dty