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 (); } } }
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 (); } } }
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行目
...
利点
- バッファリングされていないストリームと比較して、書き込みパフォーマンスが高速になります。
- 物理的な書き込み操作の数を減らします。