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 BufferedOutputStream : Écriture d'octets efficace expliquée

Java BufferedOutputStream : Écriture d'octets efficace expliquée

La classe BufferedOutputStream, du package java.io, encapsule un autre OutputStream pour accélérer l'écriture au niveau octet. En mettant en tampon les données en mémoire, elle réduit le nombre d'opérations d'écriture vers le périphérique sous-jacent, améliorant considérablement les performances, surtout pour les gros fichiers.

Elle hérite de la classe abstraite OutputStream et fournit des implémentations concrètes de ses méthodes.


Comment fonctionne BufferedOutputStream

Le flux alloue en interne un tampon de 8 Kio (8 192 octets) par défaut. Quand write() est appelé, les octets sont d'abord stockés dans ce tampon. Ce n'est que lorsque le tampon est plein, ou quand flush() ou close() est invoqué, que les données sont vidées vers le flux sous-jacent.

Comme les E/S disque sont coûteuses, cette stratégie de tamponnage réduit les allers-retours et rend les écritures d'octets considérablement plus rapides.


Création d'un BufferedOutputStream

Importez la classe et encapsulez tout OutputStream, généralement un FileOutputStream :

FileOutputStream fichier = new FileOutputStream("output.txt");
BufferedOutputStream tampon = new BufferedOutputStream(fichier);

Pour contrôler la taille du tampon, fournissez un second argument :

BufferedOutputStream tampon = new BufferedOutputStream(fichier, 16384); // tampon 16 Kio

Un tampon plus grand peut bénéficier aux très grosses écritures, mais 8 Kio par défaut convient à la plupart des scénarios.


Méthodes principales de BufferedOutputStream

write()

Exemple : Écriture de texte dans un fichier

import java.io.*;

public class Main {
    public static void main(String[] args) {
        String donnees = "Ceci est une ligne de texte dans le fichier";
        try (FileOutputStream fos = new FileOutputStream("output.txt");
             BufferedOutputStream bos = new BufferedOutputStream(fos)) {
            bos.write(donnees.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Ce programme crée output.txt contenant :

Ceci est une ligne de texte dans le fichier

Note : String.getBytes() convertit la chaîne en tableau d'octets avec le jeu de caractères par défaut. Pour des résultats déterministes, spécifiez un jeu de caractères, ex: donnees.getBytes(StandardCharsets.UTF_8).


flush()

Force l'écriture immédiate des données en tampon vers le flux sous-jacent. Utile pour garantir la persistance avant fermeture ou lors d'écriture sur une socket réseau.

BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write(donnees.getBytes());
bos.flush(); // garantit l'envoi des données

close()

Ferme le flux, vidant les données restantes et libérant les ressources système. Après close(), le flux ne peut plus être utilisé.


Pour une référence complète, consultez la documentation officielle : API BufferedOutputStream.

Java

  1. Comprendre le mot-clé final en Java : variables, méthodes et classes
  2. L'opérateur instanceof en Java : guide complet
  3. Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
  4. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  5. Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
  6. Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
  7. Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
  8. Maîtriser les génériques Java : Construire du code réutilisable et type-safe
  9. Maîtriser les opérations sur les fichiers Java avec java.io – Création, lecture, écriture et suppression