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 楼答案
a.read(b)表示从
a
读取数据并存储到b
任何类的
read
方法都提供了从对象中读取的功能根据Java文档,InputStream:
同样地,FileChannel:
公约是统一的,没有含糊不清之处