Classe Java BufferedOutputStream

le BufferedOutputStream classe de la java.io package est utilisé avec d’autres flux de sortie pour écrire les données (en octets) plus efficacement.

Il étend le OutputStream classe abstraite.

The BufferedOutputStream class is a subclass of the Java OutputStream.


Fonctionnement de BufferedOutputStream

le BufferedOutputStream maintient un internetampon de 8192 octets.

Pendant l’opération d’écriture, les octets sont écrits dans la mémoire tampon interne au lieu du disque. Une fois le tampon rempli ou le flux fermé, tout le tampon est écrit sur le disque.

Par conséquent, le nombre de communications avec le disque est réduit. C’est pourquoi l’écriture d’octets est plus rapide en utilisant BufferedOutputStream .


Créer un BufferedOutputStream

Afin de créer un BufferedOutputStream , nous devons importer le java.io.BufferedOutputStream paquet en premier. Une fois que nous avons importé le package, voici comment créer le flux de sortie.

 // Creates a FileOutputStream
FileOutputStream file = new FileOutputStream(String path);

// Creates a BufferedOutputStream
BufferedOutputStream buffer = new BufferOutputStream(file);
 

Dans l’exemple ci-dessus, nous avons créé un BufferdOutputStream nommétamponavec le FileOutputStream nomméfichier.

Ici, la mémoire tampon interne a la taille par défaut de 8192 octets. Cependant, nous pouvons également spécifier la taille du tampon interne.

 // Creates a BufferedOutputStream with specified size internal buffer
BufferedOutputStream buffer = new BufferOutputStream(file, int size);
 

letamponaidera à écrire des octets dans des fichiers plus rapidement.


Méthodes de BufferedOutputStream

le BufferedOutputStream classe fournit des implémentations pour différentes méthodes dans le OutputStream classe.

write (), méthode

  •  write() – écrit un seul octet dans le tampon interne du flux de sortie
  •  write(byte[] array) – écrit les octets du tableau spécifié dans le flux de sortie
  •  write(byte[] arr, int start, int length) – écrit le nombre d’octets égal àlongueurau flux de sortie d’un tableau à partir de la positiondébut

Exemple: BufferedOutputStream pour écrire des données dans un fichier

 import java.io.FileOutputStream;
import java.io.BufferedOutputStream;

public class Main {
    public static void main(String[] args) {

        String data = "This is a line of text inside the file";

        try {
            // Creates a FileOutputStream
            FileOutputStream file = new FileOutputStream("output.txt");

            // Creates a BufferedOutputStream
            BufferedOutputStream output = new BufferedOutputStream(file);

            byte[] array = data.getBytes();

            // Writes data to the output stream
            output.write(array);
            output.close();
        }

        catch (Exception e) {
            e.getStackTrace();
        }
    }
}
 

Dans l’exemple ci-dessus, nous avons créé un flux de sortie tamponné nomméproductionde même que FileOutputStream . Le flux de sortie est lié au fichieroutput.txt.

 FileOutputStream file = new FileOutputStream("output.txt");
BufferedOutputStream output = new BufferedOutputStream(file);
 

Pour écrire des données dans le fichier, nous avons utilisé le write() méthode.

Ici, lorsque nous exécutons le programme, leoutput.txtLe fichier contient le contenu suivant.

 This is a line of text inside the file.
 

Remarque: Le getBytes() La méthode utilisée dans le programme convertit une chaîne en un tableau d’octets.


flush (), méthode

Pour effacer le tampon interne, nous pouvons utiliser le flush() méthode. Cette méthode force le flux de sortie à écrire toutes les données présentes dans la mémoire tampon dans le fichier de destination. Par exemple,

 import java.io.FileOutputStream;
import java.io.BufferedOutputStream;

public class Main {
    public static void main(String[] args) {

        String data = "This is a demo of the flush method";

        try {
            // Creates a FileOutputStream
            FileOutputStream file = new FileOutputStream(" flush.txt");

            // Creates a BufferedOutputStream
            BufferedOutputStream buffer = new BufferedOutputStream(file);

            // Writes data to the output stream
            buffer.write(data.getBytes());

            // Flushes data to the destination
            buffer.flush();
            System.out.println("Data is flushed to the file.");
            buffer.close();
        }

        catch(Exception e) {
            e.getStackTrace();
        }
    }
}
 

Production

Les données sont vidées dans le fichier.

Lorsque nous exécutons le programme, le fichierflush.txtest rempli du texte représenté par la chaîneLes données.


close (), méthode

Pour fermer le flux de sortie mis en mémoire tampon, nous pouvons utiliser le close()