betacode

Руководство Java BufferedWriter

  1. BufferedWriter
  2. Examples

1. BufferedWriter

BufferedWriter - это подкласс Writer, который используется для упрощения записи текста в поток вывода символов (character output stream) и повышения производительности программы.
Принцип работы BufferedWriter выглядит следующим образом:
BufferedWriter оборачивает внутри него объект Writer, который отвечает за запись данных в целевой объект (например, файл).
BufferdWrite переопределяет (override) методы, унаследованные от его родительского класса, такие как write(), write(char[]) и т.д чтобы гарантировать, что данные будут записаны в buffer, а не в целевой объект (например, файл). Но когда buffer заполнен, все данные из buffer будут помещены в Writer и buffer будет освобожден. Вы также можете вызвать BufferedWriter.flush(), чтобы активно передавать все данные из buffer в Writer и очистить buffer. Данные также перемещаются из buffer в Writer при вызове метода BufferedWriter.close().
Так называемый "buffer", упомянутый выше, на самом деле является просто массивом символов. Размер этого массива можно указать при инициализации объекта BufferedWriter.
Данные, которые временно записываются в buffer, сводят к минимуму непрерывную запись в целевой объект (например, файлы на жестком диске), тем самым повышая производительность программы.
BufferedWriter​ constructors
BufferedWriter​(Writer out)     

BufferedWriter​(Writer out, int sz)
  • Конструктор BufferedWriter(Write,int) создает объект BufferedWriter с массивом buffer заданного размера.
  • Конструктор BufferedWriter(Writer) создает объект BufferedWriter с массивом buffer размера по умолчанию (sz = 8192).

2. Examples

Например: Создаем BufferedWriter с размером массива buffer16384. Примечание: тип данных char Java - 2 bytes. Это означает, что размер этого buffer составляет 32786 bytes (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);
Создаем BufferedWriter с размером массива buffer по умолчанию (8192), что эквивалентно 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);
Полный код примера:
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

Руководства Java IO

Show More