Java : BufferedOutputStream - API使用例
BufferedOutputStream (Java SE 21 & JDK 21) の使い方まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。
概要
BufferedOutputStream は、バッファメモリを使い、OutputStream へ効率よく出力するためのクラスです。
BufferedOutputStream は使い終わったら close が必要です。
try-with-resources文 を使い、リソースリークが起きないようにしましょう。
final var file = Path.of("R:", "java-work", "aaa.data");
System.out.println(file); // R:\java-work\aaa.data
try (final var os = new BufferedOutputStream(Files.newOutputStream(file))) {
os.write(10);
os.write(20);
os.write(30);
}
final var ret = Files.readAllBytes(file);
System.out.println(Arrays.toString(ret)); // [10, 20, 30]
フィールド
protected byte[] buf
protectedです。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。
protected int count
protectedです。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。
FilterOutputStreamで宣言されたフィールド
out
「Java API 使用例 : FilterOutputStream」をご参照ください。
コンストラクタ
BufferedOutputStream (OutputStream out)
final var out = new ByteArrayOutputStream();
try (final var os = new BufferedOutputStream(out)) {
os.write(10);
os.write(20);
os.write(30);
}
System.out.println(Arrays.toString(out.toByteArray())); // [10, 20, 30]
BufferedOutputStream (OutputStream out, int size)
class MyOutputStream extends BufferedOutputStream {
MyOutputStream(OutputStream out) {
super(out);
}
MyOutputStream(OutputStream out, int size) {
super(out, size);
}
int getBufferSize() {
return buf.length;
}
}
try (final var os = new MyOutputStream(new ByteArrayOutputStream())) {
System.out.println(os.getBufferSize()); // 8192
}
try (final var os = new MyOutputStream(new ByteArrayOutputStream(), 32)) {
System.out.println(os.getBufferSize()); // 32
}
メソッド
void flush ()
final var out = new ByteArrayOutputStream();
try (final var os = new BufferedOutputStream(out)) {
os.write(10);
System.out.println(Arrays.toString(out.toByteArray())); // []
os.flush();
System.out.println(Arrays.toString(out.toByteArray())); // [10]
os.write(20);
System.out.println(Arrays.toString(out.toByteArray())); // [10]
os.flush();
System.out.println(Arrays.toString(out.toByteArray())); // [10, 20]
os.write(30);
System.out.println(Arrays.toString(out.toByteArray())); // [10, 20]
}
System.out.println(Arrays.toString(out.toByteArray())); // [10, 20, 30]
void write (byte[] b, int off, int len)
final var out = new ByteArrayOutputStream();
try (final var os = new BufferedOutputStream(out)) {
final byte[] b = {10, 20, 30, 40, 50};
os.write(b, 0, 2);
os.flush();
System.out.println(Arrays.toString(out.toByteArray())); // [10, 20]
os.write(b, 2, 3);
os.flush();
System.out.println(Arrays.toString(out.toByteArray())); // [10, 20, 30, 40, 50]
}
void write (int b)
final var out = new ByteArrayOutputStream();
try (final var os = new BufferedOutputStream(out)) {
os.write(10);
os.write(20);
os.write(30);
}
System.out.println(Arrays.toString(out.toByteArray())); // [10, 20, 30]
FilterOutputStreamで宣言されたメソッド
close, write
「Java API 使用例 : FilterOutputStream」をご参照ください。
OutputStreamで宣言されたメソッド
nullOutputStream
「Java API 使用例 : OutputStream」をご参照ください。