広告

Java : WritableByteChannel - API使用例

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


概要

バイトを書き込むことができるチャネルです。

クラス構成

WritableByteChannel インタフェースは、バイトデータを書き込むことができる Channel です。

final var path = Path.of("R:", "java-work", "test.data");
System.out.println(path); // R:\java-work\test.data

try (final WritableByteChannel channel = Files.newByteChannel(path,
        StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {

    final byte[] bytes = {10, 20, 30, 40, 50};
    final var src = ByteBuffer.wrap(bytes);

    src.limit(3);

    System.out.println(src); // java.nio.HeapByteBuffer[pos=0 lim=3 cap=5]
    if (src.hasArray()) {
        System.out.println(Arrays.toString(src.array())); // [10, 20, 30, 40, 50]
    }

    final var ret = channel.write(src);
    System.out.println(ret); // 3

    System.out.println(src); // java.nio.HeapByteBuffer[pos=3 lim=3 cap=5]
    if (src.hasArray()) {
        System.out.println(Arrays.toString(src.array())); // [10, 20, 30, 40, 50]
    }
}

final var bytes = Files.readAllBytes(path);
System.out.println(Arrays.toString(bytes)); // [10, 20, 30]

メソッド

int write (ByteBuffer src)

このチャネルのバイト・シーケンスを指定のバッファから書き出します。

final var path = Path.of("R:", "java-work", "test.data");
System.out.println(path); // R:\java-work\test.data

try (final WritableByteChannel channel = Files.newByteChannel(path,
        StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {

    final byte[] bytes = {10, 20, 30, 40, 50};
    final var src = ByteBuffer.wrap(bytes);

    src.limit(3);

    System.out.println(src); // java.nio.HeapByteBuffer[pos=0 lim=3 cap=5]
    if (src.hasArray()) {
        System.out.println(Arrays.toString(src.array())); // [10, 20, 30, 40, 50]
    }

    final var ret = channel.write(src);
    System.out.println(ret); // 3

    System.out.println(src); // java.nio.HeapByteBuffer[pos=3 lim=3 cap=5]
    if (src.hasArray()) {
        System.out.println(Arrays.toString(src.array())); // [10, 20, 30, 40, 50]
    }
}

final var bytes = Files.readAllBytes(path);
System.out.println(Arrays.toString(bytes)); // [10, 20, 30]

Channelで宣言されたメソッド

close, isOpen

Java API 使用例 : Channel」をご参照ください。


関連記事

ページの先頭へ