Java : ReadableByteChannel - API使用例
ReadableByteChannel (Java SE 20 & JDK 20) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様のおともにどうぞ。
概要
ReadableByteChannel インタフェースは、バイトデータを読み取ることができる Channel です。
final var path = Path.of("R:", "java-work", "test.data");
System.out.println(path); // R:\java-work\test.data
final byte[] bytes = {10, 20, 30};
Files.write(path, bytes);
try (final ReadableByteChannel channel =
Files.newByteChannel(path, StandardOpenOption.READ)) {
final var dst = ByteBuffer.allocate(5);
System.out.println(dst); // java.nio.HeapByteBuffer[pos=0 lim=5 cap=5]
if (dst.hasArray()) {
System.out.println(Arrays.toString(dst.array())); // [0, 0, 0, 0, 0]
}
final var ret = channel.read(dst);
System.out.println(ret); // 3
System.out.println(dst); // java.nio.HeapByteBuffer[pos=3 lim=5 cap=5]
if (dst.hasArray()) {
System.out.println(Arrays.toString(dst.array())); // [10, 20, 30, 0, 0]
}
}
メソッド
int read (ByteBuffer dst)
final var path = Path.of("R:", "java-work", "test.data");
System.out.println(path); // R:\java-work\test.data
final byte[] bytes = {10, 20, 30};
Files.write(path, bytes);
try (final ReadableByteChannel channel =
Files.newByteChannel(path, StandardOpenOption.READ)) {
final var dst = ByteBuffer.allocate(5);
System.out.println(dst); // java.nio.HeapByteBuffer[pos=0 lim=5 cap=5]
if (dst.hasArray()) {
System.out.println(Arrays.toString(dst.array())); // [0, 0, 0, 0, 0]
}
final var ret = channel.read(dst);
System.out.println(ret); // 3
System.out.println(dst); // java.nio.HeapByteBuffer[pos=3 lim=5 cap=5]
if (dst.hasArray()) {
System.out.println(Arrays.toString(dst.array())); // [10, 20, 30, 0, 0]
}
}
Channelで宣言されたメソッド
close, isOpen
「Java API 使用例 : Channel」をご参照ください。