devstory

Le Tutoriel de Java BufferedWriter

  1. BufferedWriter
  2. Examples

1. BufferedWriter

BufferedWriter est une sous-classe de Writer, qui est utilisée pour simplifier l'écriture de texte dans un flux de sortie de caractères (character output stream) et améliorer les performances du programme.
Le principe de fonctionnement de BufferedWriter ressemble à l'illustration ci-dessous:
BufferedWriter enveloppe à son intérieur un objet Writer, qui est responsable de l'écriture des données sur la cible (comme un fichier).
BufferdWrite remplace (override) les méthodes héritées de sa classe parente, telles que write(), write (char[]), ... pour s'assurer que les données seront écrites dans buffer et non dans la cible (par exemple, fichier). Mais lorsque buffer est plein, toutes les données dans buffer seront poussées dans Writer et libèrera buffer. Vous pouvez également appeler la méthode BufferedWriter.flush() pour pousser activement toutes les données de buffer vers Writer et libérer buffer. Les données sont également transférées de buffer vers Writer en appelant la méthode BufferedWriter.close().
Le soi-disant "buffer" mentionné ci-dessus n'est qu'un tableau de caractères. Vous pouvez spécifier la taille de ce tableau lors de l'initialisation de l'objet BufferedWriter.
Les données qui sont temporairement écrites dans buffer minimisent l'écriture continue sur la cible (par exemple les fichiers sur un disque dur), améliorant ainsi les performances du programme.
BufferedWriter​ constructors
BufferedWriter​(Writer out)     

BufferedWriter​(Writer out, int sz)
  • Le constructeur BufferedWriter(Write, int) crée un objet BufferedWriter avec un tableau avec buffer de taille spécifiée.
  • Le constructeur BufferedWriter(Writer) crée un objet BufferedWriter avec un tableau avec buffer de taille par défaut (sz = 8192).

2. Examples

Exemple: créer un BufferedWriter avec une taille de tableau de buffer de 16384. Remarque: le type de données char de Java est de 2 bytes. Cela signifie que ce buffer a une taille de 32786bytes(32 Kb).
File outFile = new File("/Volumes/Data/test/outfile.txt");
outFile.getParentFile().mkdirs(); // Create parent folder.

// Create Writer to write a file.
Writer writer = new FileWriter(outFile, StandardCharsets.UTF_8);

// Create a BufferedWriter with buffer array size of 16384 (32786 bytes = 32 KB).
BufferedWriter br = new BufferedWriter(writer, 16384);
Créer un BufferedWriter avec la taille de tableau de buffer par défaut (8192), ce qui équivaut à 16384 bytes (16 Kb).
File outFile = new File("/Volumes/Data/test/outfile.txt");
outFile.getParentFile().mkdirs(); // Create parent folder.

// Create Writer to write a file.
Writer writer = new FileWriter(outFile, StandardCharsets.UTF_8);

// Create a BufferedWriter with default buffer array size of 8192 (16384 bytes = 16 KB).
BufferedWriter br = new BufferedWriter(writer);
Le codage complet de l'exemple:
BufferedWriterEx1.java
package org.o7planning.bufferedwriter.ex;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.nio.charset.StandardCharsets;

public class BufferedWriterEx1 {

    public static void main(String[] args) throws IOException {
        File outFile = new File("/Volumes/Data/test/outfile.txt");
        
        outFile.getParentFile().mkdirs(); // Create parent folder.
        
        // Create Writer to write a file.
        Writer writer = new FileWriter(outFile, StandardCharsets.UTF_8);

        // Create a BufferedWriter with buffer array size of 16384 (32786 bytes = 32 KB).
        BufferedWriter br = new BufferedWriter(writer, 16384);
    
        br.write("Line 1");
        br.newLine();  
        br.write("Line 2");
        br.flush();
        
        br.newLine();
        br.write("Line 3");
        
        br.close();
    }
}
Output:
outfile.txt
Line 1
Line 2
Line 3

Tutoriels Java IO

Show More