Java BufferedOutputStream クラス

Java では、BufferedOutputStream クラスを使用して、出力ストリームにデータをより効率的に書き込みます。別の出力ストリームにバッファを追加し、宛先 (ファイルなど) にデータを書き込む前にメモリにデータを一時的に保存することで、I/O 操作の数を減らします。

これは java.io パッケージに属し、FilterOutputStream クラスを拡張します。

クラス宣言

パブリック クラス BufferedOutputStream は FilterOutputStream を拡張します

  • バッファを使用して直接ディスク アクセスを減らすことにより、I/O パフォーマンスが向上します。
  • データはバッファに書き込まれ、バッファがいっぱいになった (またはフラッシュされた) 場合にのみ、基礎となる出力ストリームに送信されます。
  • 通常は FileOutputStream とともに使用されます。
  • 画像テキストファイルやバイナリデータなどのバイトデータの書き込みに役立ちます。

コンストラクター

  • BufferedOutputStream(出力ストリーム出力): デフォルトのバッファ サイズ 8192 バイトでバッファ付き出力ストリームを作成します。
  • BufferedOutputStream(OutputStream 出力 int サイズ): 指定されたバッファ サイズでバッファ付き出力ストリームを作成します。

重要な方法

方法 説明
void write(int b) 単一バイトを出力ストリームに書き込みます。
void write(byte[] b int off int len) バイト配列の一部を出力ストリームに書き込みます。
void flush() バッファをフラッシュし、バッファされた出力バイトを強制的に書き込みます。
void close() 最初にフラッシュしてストリームを閉じます。

Java
   import     java.io.*  ;   public     class   BufferedOutputStreamExample     {      public     static     void     main  (  String  []     args  )     {      String     data     =     'BufferedOutputStream in Java Example'  ;      try     {      FileOutputStream     fileOut     =     new     FileOutputStream  (  'output.txt'  );      BufferedOutputStream     bufferOut     =     new     BufferedOutputStream  (  fileOut  );      byte  []     bytes     =     data  .  getBytes  ();      bufferOut  .  write  (  bytes  );      bufferOut  .  close  ();      System  .  out  .  println  (  'Data written successfully.'  );      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }   }   

出力 (output.txt の内容):

Java での BufferedOutputStream の例

例 2: flash() メソッドの使用

Java
   import     java.io.*  ;   public     class   FlushExample     {      public     static     void     main  (  String  []     args  )     {      try     {      FileOutputStream     fileOut     =     new     FileOutputStream  (  'flush.txt'  );      BufferedOutputStream     bufferOut     =     new     BufferedOutputStream  (  fileOut  );      bufferOut  .  write  (  'Hello'  .  getBytes  ());      bufferOut  .  flush  ();     // ensures data is written immediately      bufferOut  .  close  ();      System  .  out  .  println  (  'Flush example completed.'  );      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }   }   

出力 (flush.txt の内容):

こんにちは

Java
   import     java.io.*  ;   public     class   LargeDataExample     {      public     static     void     main  (  String  []     args  )     {      try     {      FileOutputStream     fileOut     =     new     FileOutputStream  (  'large.txt'  );      BufferedOutputStream     bufferOut     =     new     BufferedOutputStream  (  fileOut       8192  );     // custom buffer size      for     (  int     i     =     0  ;     i      <     1000  ;     i  ++  )     {      bufferOut  .  write  ((  'Line '     +     i     +     'n'  ).  getBytes  ());      }      bufferOut  .  close  ();      System  .  out  .  println  (  'Large data written successfully.'  );      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }   }   

出力 (large.txt の最初の数行の内容):

0行目

1行目

2行目

...

利点

  • バッファリングされていないストリームと比較して、書き込みパフォーマンスが高速になります。
  • 物理的な書き込み操作の数を減らします。
クイズの作成