Maîtriser Java ByteArrayOutputStream : Méthodes, utilisation et exemples pratiques
Maîtriser Java ByteArrayOutputStream : Méthodes, utilisation et exemples pratiques
La classe ByteArrayOutputStream du package java.io permet d'écrire des données dans un tableau d'octets interne qui s'agrandit automatiquement selon les besoins. Elle étend la classe abstraite OutputStream, en faisant un outil polyvalent pour la manipulation d'octets en mémoire.
Note : La classe maintient un tampon interne qui s'étend à la demande, vous n'avez généralement pas besoin de pré-définir sa capacité sauf si vous connaissez la taille exacte requise.
Création d'un ByteArrayOutputStream
Importez java.io.ByteArrayOutputStream et instanciez-le. Par défaut, le tampon commence à 32 octets :
// Taille par défaut
ByteArrayOutputStream out = new ByteArrayOutputStream();
Vous pouvez aussi spécifier une capacité initiale si vous attendez une charge importante :
// Taille personnalisée
ByteArrayOutputStream out = new ByteArrayOutputStream(int taille);
Le paramètre taille définit la longueur initiale du tampon en octets.
Méthodes principales de ByteArrayOutputStream
Méthode write()
write(int b)– Écrit un seul octetwrite(byte[] b)– Écrit un tableau d'octets completwrite(byte[] b, int off, int len)– Écritlenoctets depuis le tableau à partir de l'indexoffwriteTo(ByteArrayOutputStream out1)– Copie le tampon courant vers un autreByteArrayOutputStream
Exemple : Écriture de données dans ByteArrayOutputStream
import java.io.ByteArrayOutputStream;
class Main {
public static void main(String[] args) {
String donnees = "Ceci est une ligne de texte dans la chaîne.";
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] tableau = donnees.getBytes();
out.write(tableau);
String donneesFlux = out.toString();
System.out.println("Flux de sortie : " + donneesFlux);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Sortie
Flux de sortie : Ceci est une ligne de texte dans la chaîne.
Ici, write() transfère le tableau d'octets dans le flux, et toString() récupère les données accumulées en texte.
Accès aux données depuis ByteArrayOutputStream
toByteArray()– Renvoie une copie du tableau d'octets internetoString()– Convertit le tampon enStringavec le jeu de caractères par défaut
Démonstration des deux méthodes :
import java.io.ByteArrayOutputStream;
class Main {
public static void main(String[] args) {
String donnees = "Ceci est des données.";
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
out.write(donnees.getBytes());
byte[] donneesOctets = out.toByteArray();
System.out.print("Données via toByteArray() : ");
for (int i = 0; i < donneesOctets.length; i++) {
System.out.print((char) donneesOctets[i]);
}
String donneesChaine = out.toString();
System.out.println("\nDonnées via toString() : " + donneesChaine);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Sortie
Données via toByteArray() : Ceci est des données. Données via toString() : Ceci est des données.
Méthode close()
Appeler close() sur un ByteArrayOutputStream n'a aucun effet néfaste ; le flux reste utilisable. Ce comportement correspond à sa conception pour les tampons en mémoire où aucune ressource externe n'a besoin d'être libérée.
Méthodes supplémentaires
| Méthode | Description |
|---|---|
size() | Renvoie le nombre d'octets écrits jusqu'à présent |
flush() | Réinitialise le tampon interne, vidant effectivement le flux |
Pour une utilisation avancée, consultez la documentation officielle Java SE.
Java
- Comprendre le mot-clé final en Java : variables, méthodes et classes
- L'opérateur instanceof en Java : guide complet
- Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
- Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
- Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
- Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
- Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
- Maîtriser les génériques Java : Construire du code réutilisable et type-safe
- Maîtriser les opérations sur les fichiers Java avec java.io – Création, lecture, écriture et suppression