Java ByteArrayInputStream (avec des exemples)

Dans ce didacticiel, nous allons découvrir Java ByteArrayInputStream et ses méthodes à l'aide d'exemples.

La ByteArrayInputStreamclasse du java.iopackage peut être utilisée pour lire un tableau de données d'entrée (en octets).

Il étend la InputStreamclasse abstraite.

Remarque : Dans ByteArrayInputStream, le flux d'entrée est créé à l'aide du tableau d'octets. Il comprend un tableau interne pour stocker les données de ce tableau d'octets particulier.

Créer un ByteArrayInputStream

Afin de créer un flux d'entrée de tableau d'octets, nous devons d'abord importer le java.io.ByteArrayInputStreampackage. Une fois que nous avons importé le package, voici comment nous pouvons créer un flux d'entrée.

 // Creates a ByteArrayInputStream that reads entire array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr); 

Ici, nous avons créé un flux d'entrée qui lit des données entières du arrtableau. Cependant, nous pouvons également créer le flux d'entrée qui ne lit que certaines données du tableau.

 // Creates a ByteArrayInputStream that reads a portion of array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr, int start, int length); 

Ici, le flux d'entrée lit le nombre d'octets égal à la longueur du tableau à partir de la position de départ.

Méthodes de ByteArrayInputStream

La ByteArrayInputStreamclasse fournit des implémentations pour différentes méthodes présentes dans la InputStreamclasse.

read (), méthode

  • read() - lit l'octet unique du tableau présent dans le flux d'entrée
  • read(byte() array) - lit les octets du flux d'entrée et les stocke dans le tableau spécifié
  • read(byte() array, int start, int length) - lit le nombre d'octets égal à la longueur du flux et stocke dans le tableau spécifié à partir de la position de début

Exemple: ByteArrayInputStream pour lire des données

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String() args) ( // Creates an array of byte byte() array = (1, 2, 3, 4); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); System.out.print("The bytes read from the input stream: "); for(int i= 0; i < array.length; i++) ( // Reads the bytes int data = input.read(); System.out.print(data + ", "); ) input.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Production

 Les octets lus dans le flux d'entrée: 1, 2, 3, 4, 

Dans l'exemple ci-dessus, nous avons créé un flux d'entrée de tableau d'octets nommé input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Ici, le flux d'entrée inclut toutes les données du tableau spécifié. Pour lire les données du flux d'entrée, nous avons utilisé la read()méthode.

available () Méthode

Pour obtenir le nombre d'octets disponibles dans le flux d'entrée, nous pouvons utiliser la available()méthode. Par exemple,

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Creates an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Returns the available number of bytes System.out.println("Available bytes at the beginning: " + input.available()); // Reads 2 bytes from the input stream input.read(); input.read(); // Returns the available number of bytes System.out.println("Available bytes at the end: " + input.available()); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Production

 Octets disponibles au début: 4 Octets disponibles à la fin: 2 

Dans l'exemple ci-dessus,

  1. Nous avons utilisé la available()méthode pour vérifier le nombre d'octets disponibles dans le flux d'entrée.
  2. Nous avons ensuite utilisé la read()méthode 2 fois pour lire 2 octets dans le flux d'entrée.
  3. Maintenant, après avoir lu les 2 octets, nous avons vérifié les octets disponibles. Cette fois, les octets disponibles ont diminué de 2.

skip (), méthode

Pour supprimer et ignorer le nombre d'octets spécifié, nous pouvons utiliser la skip()méthode. Par exemple,

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Create an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Using the skip() method input.skip(2); System.out.print("Input stream after skipping 2 bytes: "); int data = input.read(); while (data != -1) ( System.out.print(data + ", "); data = input.read(); ) // close() method input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Production

 Flux d'entrée après avoir sauté 2 octets: 3, 4, 

Dans l'exemple ci-dessus, nous avons utilisé la méthode skip () pour ignorer 2 octets de données du flux d'entrée. Par conséquent, 1 et 2 ne sont pas lus à partir du flux d'entrée.

close (), méthode

Pour fermer le flux d'entrée, nous pouvons utiliser la close()méthode.

Cependant, la close()méthode n'a aucun effet en ByteArrayInputStreamclasse. Nous pouvons utiliser les méthodes de cette classe même après l' close()appel de la méthode.

Autres méthodes de ByteArrayInputStream

Méthodes Descriptions
finalize() garantit que la close()méthode est appelée
mark() marque la position dans le flux d'entrée jusqu'à laquelle les données ont été lues
reset() renvoie le contrôle au point du flux d'entrée où la marque a été définie
markSupported() vérifie si le flux d'entrée prend en charge mark()etreset()

Pour en savoir plus, visitez Java ByteArrayInputStream (documentation Java officielle).

Articles intéressants...