有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

api文件通道的命名不明确且混乱。Java NIO中的read()/write()

阅读(b)方法通常意味着a正在从b读东西

我认为这是一个惯例,有这样的例子:

输入内存。read()和系统。在里面read()都是关于从参数中读取某些内容

但是,当涉及到FileChannel时。read()方法。情况完全不同:

FileChannel fc = FileChannel.open(Paths.get("test"),StandardOpenOption.READ,StandardOpenOption.WRITE)
ByteBuffer copy = ByteBuffer.allocate(10)
nread = fc.read(copy)

fc。读取(复制)意味着将某些内容写入复制缓冲区,而不是从复制缓冲区读取。它是如此令人困惑,以至于我在第一次使用它时没有阅读jdk文档就犯了错误。与fc相同。写入(复制),这意味着从复制缓冲区读取到文件通道

如果fc的命名是正确的,那么Ii是有帮助的。读取(复制)可以更改为fc。读到(副本)

这是一个令人困惑的设计吗? 为什么API设计师应该这样设计


共 (1) 个答案

  1. # 1 楼答案

    a.read(b)表示从a读取数据并存储到b

    任何类的read方法都提供了从对象中读取的功能

    根据Java文档,InputStream

    Reads the next byte of data from the input stream.

    同样地,FileChannel

    Reads a sequence of bytes from this channel into the given buffer.

    公约是统一的,没有含糊不清之处