Руководство Java BufferedWriter
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
- Руководство Java CharArrayWriter
- Руководство Java FilterReader
- Руководство Java FilterWriter
- Руководство Java PrintStream
- Руководство Java BufferedReader
- Руководство Java BufferedWriter
- Руководство Java StringReader
- Руководство Java StringWriter
- Руководство Java PipedReader
- Руководство Java LineNumberReader
- Руководство Java PushbackReader
- Руководство Java PrintWriter
- Руководство Java IO Binary Streams
- Руководство Java IO Character Streams
- Руководство Java BufferedOutputStream
- Руководство Java ByteArrayOutputStream
- Руководство Java DataOutputStream
- Руководство Java PipedInputStream
- Руководство Java OutputStream
- Руководство Java ObjectOutputStream
- Руководство Java PushbackInputStream
- Руководство Java SequenceInputStream
- Руководство Java BufferedInputStream
- Руководство Java Reader
- Руководство Java Writer
- Руководство Java FileReader
- Руководство Java FileWriter
- Руководство Java CharArrayReader
- Руководство Java ByteArrayInputStream
- Руководство Java DataInputStream
- Руководство Java ObjectInputStream
- Руководство Java InputStreamReader
- Руководство Java OutputStreamWriter
- Руководство Java InputStream
- Руководство Java FileInputStream
Show More