Dans ce didacticiel, nous allons découvrir Java ByteArrayInputStream et ses méthodes à l'aide d'exemples.
La ByteArrayInputStream
classe du java.io
package peut être utilisée pour lire un tableau de données d'entrée (en octets).
Il étend la InputStream
classe 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.ByteArrayInputStream
package. 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 arr
tableau. 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 ByteArrayInputStream
classe fournit des implémentations pour différentes méthodes présentes dans la InputStream
classe.
read (), méthode
read()
- lit l'octet unique du tableau présent dans le flux d'entréeread(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,
- Nous avons utilisé la
available()
méthode pour vérifier le nombre d'octets disponibles dans le flux d'entrée. - Nous avons ensuite utilisé la
read()
méthode 2 fois pour lire 2 octets dans le flux d'entrée. - 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 ByteArrayInputStream
classe. 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).