広告

Java : Flushable - API使用例

Flushable (Java SE 21 & JDK 21) の使い方まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。


概要

Flushableは、フラッシュできるデータの宛先です。 flushメソッドは、バッファに格納されているすべての出力をベースとなるストリームに書き込むために呼び出されます。

クラス構成

Flushable を実装したIOストリームでは、バッファに格納されていてまだ実際に書き込まれていないデータを、明示的にフラッシュする(書き込む) ことができます。

final var out = new ByteArrayOutputStream();
try (final var os = new BufferedOutputStream(out)) {

    final Flushable flushable = os;

    os.write(10);
    System.out.println(Arrays.toString(out.toByteArray())); // []

    flushable.flush();
    System.out.println(Arrays.toString(out.toByteArray())); // [10]

    os.write(20);
    System.out.println(Arrays.toString(out.toByteArray())); // [10]

    flushable.flush();
    System.out.println(Arrays.toString(out.toByteArray())); // [10, 20]

    os.write(30);
    System.out.println(Arrays.toString(out.toByteArray())); // [10, 20]

    flushable.flush();
    System.out.println(Arrays.toString(out.toByteArray())); // [10, 20, 30]
}

メソッド

void flush ()

バッファに格納されているすべての出力をベースとなるストリームに書き込むことによって、このストリームをフラッシュします。

final var out = new ByteArrayOutputStream();
try (final var os = new BufferedOutputStream(out)) {

    final Flushable flushable = os;

    os.write(10);
    System.out.println(Arrays.toString(out.toByteArray())); // []

    flushable.flush();
    System.out.println(Arrays.toString(out.toByteArray())); // [10]

    os.write(20);
    System.out.println(Arrays.toString(out.toByteArray())); // [10]

    flushable.flush();
    System.out.println(Arrays.toString(out.toByteArray())); // [10, 20]

    os.write(30);
    System.out.println(Arrays.toString(out.toByteArray())); // [10, 20]

    flushable.flush();
    System.out.println(Arrays.toString(out.toByteArray())); // [10, 20, 30]
}

関連記事

ページの先頭へ