Java : GatheringByteChannel - API使用例
GatheringByteChannel (Java SE 20 & JDK 20) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様のおともにどうぞ。
概要
GatheringByteChannel インタフェースは、複数の ByteBuffer からバイトデータを書き込むことができる Channel です。
final var path = Path.of("R:", "java-work", "test.data");
System.out.println(path); // R:\java-work\test.data
try (final GatheringByteChannel channel = FileChannel.open(
path, StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {
final ByteBuffer[] srcs = {
ByteBuffer.wrap(new byte[]{10, 20}),
ByteBuffer.wrap(new byte[]{30, 40, 50}),
ByteBuffer.wrap(new byte[]{60, 70, 80, 90}),
};
final var ret = channel.write(srcs);
System.out.println(ret); // 9
}
final var bytes = Files.readAllBytes(path);
// [10, 20, 30, 40, 50, 60, 70, 80, 90]
System.out.println(Arrays.toString(bytes));
メソッド
long write (ByteBuffer[] srcs)
final var path = Path.of("R:", "java-work", "test.data");
System.out.println(path); // R:\java-work\test.data
try (final GatheringByteChannel channel = FileChannel.open(
path, StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {
final ByteBuffer[] srcs = {
ByteBuffer.wrap(new byte[]{10, 20}),
ByteBuffer.wrap(new byte[]{30, 40, 50}),
ByteBuffer.wrap(new byte[]{60, 70, 80, 90}),
};
final var ret = channel.write(srcs);
System.out.println(ret); // 9
}
final var bytes = Files.readAllBytes(path);
// [10, 20, 30, 40, 50, 60, 70, 80, 90]
System.out.println(Arrays.toString(bytes));
long write (ByteBuffer[] srcs, int offset, int length)
final var path = Path.of("R:", "java-work", "test.data");
System.out.println(path); // R:\java-work\test.data
try (final GatheringByteChannel channel = FileChannel.open(
path, StandardOpenOption.CREATE, StandardOpenOption.WRITE)) {
final ByteBuffer[] srcs = {
ByteBuffer.wrap(new byte[]{10}),
ByteBuffer.wrap(new byte[]{20, 30}),
ByteBuffer.wrap(new byte[]{40, 50, 60}),
ByteBuffer.wrap(new byte[]{70, 80, 90, 100}),
};
final var ret = channel.write(srcs, 1, 2);
System.out.println(ret); // 5
}
final var bytes = Files.readAllBytes(path);
// [20, 30, 40, 50, 60]
System.out.println(Arrays.toString(bytes));
Channelで宣言されたメソッド
close, isOpen
「Java API 使用例 : Channel」をご参照ください。
WritableByteChannelで宣言されたメソッド
write
「Java API 使用例 : WritableByteChannel」をご参照ください。