Java : ReadableByteChannel 示例

Java 中的 ReadableByteChannel (Java SE 23 & JDK 23) 及其示例。
您将找到大多数 ReadableByteChannel 方法的代码示例。

注解 :

  • 本文可能使用了翻译软件以方便阅读。 另请查看英文原文

简介

可以读取字节的通道。 (机器翻译)

Class diagram

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]
    }
}

Methods

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]
    }
}

Methods declared in Channel

close, isOpen

请参阅下面的链接。


相关文章

To top of page