Руководство Java BufferedOutputStream
1. BufferedOutputStream
BufferedOutputStream - это подкласс OutputStream, который используется для упрощения записи текста в двоичный выходной поток (binary output stream) и повышения производительности программы.
- OutputStream
- ByteArrayOutputStream
- ObjectOutputStream
- PrintStream
- FileOutputStream
- FilterOutputStream
- PipedOutputStream
- DataOutputStream
- InflaterOutputStream
- DigestOutputStream
- DeflaterOutputStream
- CipherOutputStream
- CheckedOutputStream
Принцип работы BufferedOutputStream выглядит следующим образом:
BufferedOutputStream оборачивает внутри него объект OutputStream, который отвечает за запись данных в целевой объект (например, файл).
BufferedOutputStream переопределяет (override) методы, унаследованные от его родительского класса, такие как write(), write(byte[]) и т. д., чтобы гарантировать, что данные будут записаны в buffer, а не в целевой объект (например, файл). Но когда buffer заполнен, все данные в buffer будут помещены OutputStream и buffer будет освобожден. Вы также можете вызвать метод BufferedOutputStream.flush(), чтобы передать все данные из buffer в OutputStream и очистить buffer. Данные также перемещаются из buffer в OutputStream при вызове метода BufferedOutputStream.close().
Так называемый "buffer", упомянутый выше, на самом деле является просто массивом byte. Размер этого массива можно указать при инициализации объекта BufferedOutputStream.
Данные, которые временно записываются в buffer, сводят к минимуму непрерывную запись в целевой объект (например, файлы на жестком диске), тем самым повышая производительность программы.
BufferedOutputStream constructors
BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out, int size)
- Конструктор BufferedOutputStream(OutputStream,int) создает объект BufferedOutputStream с массивом buffer заданного размера.
- Конструктор BufferedOutputStream(OutputStream) создает объект BufferedOutputStream с массивом buffer размера по умолчанию (size = 8192).
2. Examples
Например: Создаем BufferedOutputStream с размером массива buffer16384. Это означает, что размер этого buffer составляет 16384 bytes (16 KB).
File outFile = new File("/Volumes/Data/test/outfile.txt");
outFile.getParentFile().mkdirs(); // Create parent folder.
// Create OutputStream to write a file.
OutputStream os = new FileOutputStream(outFile);
// Create a BufferedOutputStream with buffer array size of 16384 (16384 bytes = 16 KB).
BufferedOutputStream br = new BufferedOutputStream(os, 16384);
Создаем BufferedOutputStream с размером массива buffer по умолчанию (8192), который эквивалентен 8192 bytes (8 KB).
File outFile = new File("/Volumes/Data/test/outfile.txt");
outFile.getParentFile().mkdirs(); // Create parent folder.
// Create OutputStream to write a file.
OutputStream os = new FileOutputStream(outFile);
// Create a BufferedOutputStream with default buffer array size of 8192 (8192 bytes = 8 KB).
BufferedOutputStream br = new BufferedOutputStream(os);
Полный код примера:
BufferedOutputStreamEx1.java
package org.o7planning.bufferedoutputstream.ex;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class BufferedOutputStreamEx1 {
private static final String file_path = "/Volumes/Data/test/outfile.txt";
public static void main(String[] args) throws IOException {
File outFile = new File(file_path);
outFile.getParentFile().mkdirs(); // Create parent folder.
// Create OutputStream to write a file.
OutputStream os = new FileOutputStream(outFile);
// Create a BufferedOutputStream with buffer array size of 16384 (16384 bytes = 16 KB).
BufferedOutputStream br = new BufferedOutputStream(os, 16384);
br.write("JP".getBytes("UTF-8"));
br.write('\n');
br.write("日本".getBytes("UTF-8"));
br.write('\n');
br.flush();
br.write('\n');
br.write("八洲".getBytes("UTF-8"));
br.close();
}
}
Output:
outfile.txt
JP
日本
八洲
Руководства 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