Java : ByteChannel 示例

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

注解 :

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

简介

可以读取和写入字节的通道。此接口只是统一了 ReadableByteChannel 和 WritableByteChannel,并未指定任何新的操作。 (机器翻译)

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 ByteChannel channel = Files.newByteChannel(path,
        StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.READ)) {

    final var array = new byte[5];

    final var buffer = ByteBuffer.wrap(array);
    System.out.println(buffer); // java.nio.HeapByteBuffer[pos=0 lim=5 cap=5]

    System.out.println(buffer.position()); // 0
    System.out.println(Arrays.toString(array)); // [0, 0, 0, 0, 0]

    final var ret1 = channel.read(buffer);
    System.out.println(ret1); // 3

    System.out.println(buffer.position()); // 3
    System.out.println(Arrays.toString(array)); // [10, 20, 30, 0, 0]

    buffer.put(3, (byte) 40);
    buffer.put(4, (byte) 50);

    System.out.println(buffer.position()); // 3
    System.out.println(Arrays.toString(array)); // [10, 20, 30, 40, 50]

    final var ret2 = channel.write(buffer);
    System.out.println(ret2); // 2

    System.out.println(buffer.position()); // 5
}

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

Methods declared in Channel

close, isOpen

请参阅下面的链接。

Methods declared in ReadableByteChannel

read

请参阅下面的链接。

Methods declared in WritableByteChannel

write

请参阅下面的链接。


相关文章

To top of page