betacode

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

  1. BufferedOutputStream
  2. Examples

1. BufferedOutputStream

BufferedOutputStream - это подкласс OutputStream, который используется для упрощения записи текста в двоичный выходной поток (binary output stream) и повышения производительности программы.
Принцип работы 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

Show More