工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java BufferedOutputStream:効率的なバイト書き込み解説

Java BufferedOutputStream:効率的なバイト書き込み解説

BufferedOutputStreamクラスの設計、使用法、コアメソッドを明確な説明と実践コードスニペットでマスターします。

java.ioパッケージのBufferedOutputStreamクラスは、別のOutputStreamをラップしてバイトレベル出力を高速化します。データをメモリにバッファリングすることで、基盤デバイスへの書き込み操作回数を削減し、特に大容量ファイルでパフォーマンスを大幅に向上させます。

抽象OutputStreamクラスを継承し、そのメソッドの具象実装を提供します。

BufferedOutputStreamの仕組み

ストリームはデフォルトで8 KiB(8,192バイト)のバッファを内部的に割り当てます。write()が呼び出されると、バイトはまずこのバッファに格納されます。バッファが満杯になるか、flush()またはclose()が呼び出されたときのみ、データが基盤ストリームにフラッシュされます。

ディスクI/Oは高コストであるため、このバッファリング戦略によりラウンドトリップが削減され、バイト書き込みが大幅に高速化されます。

BufferedOutputStreamの作成

クラスをインポートし、任意のOutputStream(通常はFileOutputStream)をラップ:

FileOutputStream file = new FileOutputStream("output.txt");
BufferedOutputStream buffer = new BufferedOutputStream(file);

バッファサイズを制御するには、第2引数を指定:

BufferedOutputStream buffer = new BufferedOutputStream(file, 16384); // 16 KiBバッファ

より大きなバッファは非常に大きな書き込みに有益ですが、デフォルトの8 KiBがほとんどのシナリオで適しています。

BufferedOutputStreamの主要メソッド

クラスはバッファリングサポート付きでOutputStreamの全メソッドセットを実装します。

write()

例:テキストをファイルに書き込み

import java.io.*;

public class Main {
    public static void main(String[] args) {
        String data = "This is a line of text inside the file";
        try (FileOutputStream fos = new FileOutputStream("output.txt");
             BufferedOutputStream bos = new BufferedOutputStream(fos)) {
            bos.write(data.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

このプログラムを実行すると、output.txtが作成され以下が含まれます:

This is a line of text inside the file

注意: String.getBytes()はプラットフォームのデフォルトcharsetを使用して文字列をバイト配列に変換します。決定論的な結果を得るにはcharsetを指定、例:data.getBytes(StandardCharsets.UTF_8)。


flush()

バッファされたデータを即座に基盤ストリームに書き出し強制します。ストリームを閉じる前にデータ持続性を確保する必要がある場合や、ネットワークソケットへの書き込み時に有用です。

BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write(data.getBytes());
bos.flush(); // データ送信を保証

close()

ストリームを閉じ、残りデータをフラッシュし、システムリソースを解放。close()呼び出し後、ストリームは再利用不能になります。


包括的なリファレンスは公式Javaドキュメントを参照:BufferedOutputStream API

Java

  1. Javaのfinalキーワード完全解説:変数、メソッド、クラスでの活用法
  2. Java instanceof演算子完全ガイド:基本から継承・インターフェースまで
  3. Java継承のマスター:概念、種類、実践例
  4. Java Staticネストクラスの理解:用法、違い、実例
  5. Java無名インナークラス完全ガイド:定義、構文、実践例
  6. Javaシングルトンパターン完全解説:安全な実装と活用法
  7. Javaリフレクション完全ガイド:実行時のクラス・メソッド・フィールド検査
  8. Java ArrayList完全マスター:操作・メソッド・ベストプラクティス
  9. Java ObjectOutputStream完全ガイド:シリアル化、メソッド、実践例
  10. Javaジェネリクス完全ガイド:再利用可能で型安全なコードの構築
  11. Javaファイル操作のマスター:java.ioによる作成・読み取り・書き込み・削除