1)通道基础
通道(Channel)是java.nio的第二个主要创新。它们既不是一个扩展也不是一项增强,而是全新、极好的Java I/O示例,提供与I/O服务的直接连接。Channel用于在字节缓冲区和位于通道另一侧的实体(通常是一个文件或套接字)之间有效地传输数据。
channel的jdk源码:
1
2
3
4
5
6
package java.nio.channels;
public interface Channel;
{
public boolean isOpen();
public void close() throws IOException;
}
与缓冲区不同,通道API主要由接口指定。不同的操作系统上通道实现(Channel Implementation)会有根本性的差异,所以通道API仅仅描述了可以做什么。因此很自然地,通道实现经常使用操作系统的本地代码。通道接口允许您以一种受控且可移植的方式来访问底层的I/O服务。
Channel是一个对象,可以通过它读取和写入数据。拿 NIO 与原来的 I/O 做个比较,通道就像是流。所有数据都通过 Buffer 对象来处理。您永远不会将字节直接写入通道中,相反,您是将数据写入包含一个或者多个字节的缓冲区。同样,您不会直接从通道中读取字节,而是将数据从通道读入缓冲区,再从缓冲区获取这个字节。
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