Maison Java JavaBase Quelle est la différence entre le flux de caractères Java et le flux d'octets

Quelle est la différence entre le flux de caractères Java et le flux d'octets

Dec 02, 2019 pm 02:10 PM
java

Quelle est la différence entre le flux de caractères Java et le flux d'octets

La différence entre le flux de caractères et le flux d'octets en Java : (recommandé : tutoriel vidéo Java)

1. L'unité de base des opérations de flux d'octets est l'octet ; l'unité de base des opérations de flux de caractères est l'élément de code Unicode.

2. Le flux d'octets n'utilise pas de tampon par défaut ; le flux de caractères utilise un tampon.

3. Le flux d'octets est généralement utilisé pour traiter des données binaires. En fait, il peut traiter tout type de données, mais il ne prend pas en charge l'écriture ou la lecture directe des éléments de code Unicode. qui prend en charge l'écriture et la lecture des unités de code Unicode.

Flux d'octets

L'unité la plus basique du traitement du flux d'octets en Java est un seul octet, qui est généralement utilisé pour traiter les données binaires. Les deux classes de flux d'octets les plus élémentaires en Java sont InputStream et OutputStream, qui représentent respectivement le flux d'octets d'entrée de base et le flux d'octets de sortie.

La classe InputStream et la classe OutputStream sont des classes abstraites. En utilisation réelle, nous utilisons généralement une série de leurs sous-classes fournies dans la bibliothèque de classes Java. Prenons la classe InputStream comme exemple pour introduire le flux d'octets en Java.

La classe InputStream définit une méthode de base read pour lire les octets d'un flux d'octets. La définition de cette méthode est la suivante :

public abstract int read() throws IOException;
Copier après la connexion

Il s'agit d'une méthode abstraite, c'est-à-dire n'importe quel flux d'octets d'entrée. La classe dérivée de InputStream doit implémenter cette méthode. La fonction de cette méthode est de lire un octet du flux d'octets. Si elle atteint la fin, elle renvoie -1, sinon elle renvoie l'octet lu.

Ce que nous devons noter à propos de cette méthode, c'est qu'elle se bloquera jusqu'à ce qu'elle renvoie un octet de lecture ou -1. De plus, les flux d'octets ne prennent pas en charge la mise en cache par défaut, ce qui signifie que chaque fois que la méthode de lecture est appelée, le système d'exploitation est invité à lire un octet, qui est souvent accompagné d'une E/S disque, donc l'efficacité est relativement faible.

Certains amis peuvent penser que la méthode de lecture surchargée dans la classe InputStream qui prend un tableau d'octets comme paramètre peut lire plusieurs octets à la fois sans E/S disque fréquentes. Alors est-ce vraiment le cas ? Jetons un coup d'œil au code source de cette méthode :

public int read(byte b[]) throws IOException {
    return read(b, 0, b.length);
}
Copier après la connexion

Elle appelle une autre version de la méthode de surcharge de lecture, suivons donc :

public int read(byte b[], int off, int len) throws IOException {
        if (b == null) {
            throw new NullPointerException();
        } else if (off < 0 || len < 0 || len > b.length - off) {
            throw new IndexOutOfBoundsException();
        } else if (len == 0) {
            return 0;
        }

        int c = read();
        if (c == -1) {
            return -1;
        }
        b[off] = (byte)c;

        int i = 1;
        try {
            for (; i < len ; i++) {
                c = read();
                if (c == -1) {
                    break;
                }
                b[off + i] = (byte)c;
            }
        } catch (IOException ee) {
        }
        return i;
    }
Copier après la connexion

À partir du code ci-dessus, nous pouvons voir Oui, en fait, la méthode read(byte[]) lit également un tableau d'octets "à la fois" en appelant la méthode read() dans une boucle, donc essentiellement cette méthode n'utilise pas la mémoire tampon. Pour utiliser une mémoire tampon afin d'améliorer l'efficacité de la lecture, nous devons utiliser BufferedInputStream.

Flux de caractères

L'unité la plus basique du traitement du flux de caractères en Java est l'unité de code Unicode (taille 2 octets), qui est généralement utilisée pour traiter les données texte. L'élément de code Unicode est une unité de code Unicode, allant de 0x0000 à 0xFFFF. Chaque nombre de la plage ci-dessus correspond à un caractère. Le type String en Java encode les caractères selon les règles Unicode par défaut, puis les stocke en mémoire.

Cependant, contrairement au stockage en mémoire, les données stockées sur disque ont généralement diverses méthodes de codage. En utilisant différentes méthodes de codage, les mêmes caractères auront des représentations binaires différentes. En fait, le flux de caractères fonctionne comme ceci :

Flux de caractères de sortie : convertissez la séquence de caractères à écrire dans le fichier (en fait une séquence d'éléments de code Unicode) en une séquence d'octets dans la méthode de codage spécifiée, puis écrire dans le fichier ;

Flux de caractères d'entrée : décode la séquence d'octets à lire dans la séquence de caractères correspondante (en fait une séquence d'éléments de code Unicode) selon la méthode de codage spécifiée, afin qu'elle puisse être stockée dans le fichier. mémoire.

Nous utilisons une démo pour approfondir notre compréhension de ce processus. L'exemple de code est le suivant :

import java.io.FileWriter;
import java.io.IOException;


public class FileWriterDemo {
    public static void main(String[] args) {
        FileWriter fileWriter = null;
        try {
            try {
                fileWriter = new FileWriter("demo.txt");
                fileWriter.write("demo");
            } finally {
                fileWriter.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Copier après la connexion

Pour plus de connaissances sur Java, veuillez prêter attention au tutoriel de base Java colonne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

Créer l'avenir : programmation Java pour les débutants absolus Créer l'avenir : programmation Java pour les débutants absolus Oct 13, 2024 pm 01:32 PM

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.

See all articles