Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Java ByteArrayInputStream : Guide pratique pour lire des tableaux d'octets

Java ByteArrayInputStream : Guide pratique pour lire des tableaux d'octets

Qu'est-ce que ByteArrayInputStream ?

La classe ByteArrayInputStream, dans le package java.io, implémente InputStream et permet de traiter un tableau d'octets comme un flux d'entrée. Elle stocke en interne une copie du tableau fourni, permettant un accès aléatoire et une lecture efficace.

Note : Le flux lit depuis le tableau lui-même, pas depuis une source externe ; toutes les opérations sont basées en mémoire.


Créer un ByteArrayInputStream

Importez java.io.ByteArrayInputStream et instanciez-le. Vous pouvez lire tout le tableau ou une tranche.

ByteArrayInputStream input = new ByteArrayInputStream(byte[] tableau);
ByteArrayInputStream input = new ByteArrayInputStream(byte[] tableau, int debut, int longueur);

Le second constructeur lit longueur octets à partir de l'index debut.


Méthodes principales

read()

Exemple : Lecture d'octets

import java.io.ByteArrayInputStream;

public class Main {
    public static void main(String[] args) {
        byte[] tableau = {1, 2, 3, 4};
        try (ByteArrayInputStream input = new ByteArrayInputStream(tableau)) {
            System.out.print("Octets lus : ");
            int valeur;
            while ((valeur = input.read()) != -1) {
                System.out.print(valeur + ", ");
            }
            System.out.println();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Sortie

Octets lus : 1, 2, 3, 4, 

available()

Renvoie le nombre d'octets encore disponibles sans blocage.

import java.io.ByteArrayInputStream;

public class Main {
    public static void main(String[] args) {
        byte[] tableau = {1, 2, 3, 4};
        try (ByteArrayInputStream input = new ByteArrayInputStream(tableau)) {
            System.out.println("Initialement : " + input.available());
            input.read(); input.read();
            System.out.println("Après 2 lectures : " + input.available());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Sortie

Initialement : 4
Après 2 lectures : 2

skip()

Avance la position du flux du nombre d'octets demandé.

import java.io.ByteArrayInputStream;

public class Main {
    public static void main(String[] args) {
        byte[] tableau = {1, 2, 3, 4};
        try (ByteArrayInputStream input = new ByteArrayInputStream(tableau)) {
            input.skip(2);
            System.out.print("Après skip : ");
            int valeur;
            while ((valeur = input.read()) != -1) {
                System.out.print(valeur + ", ");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Sortie

Après skip : 3, 4, 

close()

Fermer un ByteArrayInputStream est une opération nulle ; le flux reste utilisable. La méthode existe seulement pour la compatibilité d'API.


Autres méthodes utiles

MéthodeDescription
mark(int readlimit)Marque la position courante
reset()Revient à la dernière position marquée
markSupported()Renvoie toujours true
finalize()Assure la libération des ressources (sans effet pour cette classe)

Pour l'API complète, voir la documentation officielle Java.

Java

  1. Techniques de copie de tableaux en Java : Guide complet
  2. Comprendre le mot-clé final en Java : variables, méthodes et classes
  3. L'opérateur instanceof en Java : guide complet
  4. Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
  5. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  6. Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
  7. Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
  8. Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
  9. Maîtriser Java Scanner : Guide complet avec exemples pratiques