前言
Java NIO中的Channel和流类似,但不完全相同:
-
Channel是双向的,我们既可以向Channel中写数据,也可以从Channel中读取数据。但流的读写通常是单向的。
-
Channel可以实现异步地读写。
-
Channel中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入,如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kAF9dnZD-1614064332095)(https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F0220%2Fed8c8791j00qot2r9002bc000o600g8c.jpg&thumbnail=690x2147483647&quality=75&type=jpg)]
Channel的实现
-
FileChannel 可以从文件中读取数据
-
DatagramChannel 通过UDP协议,读写网络中的数据
-
SocketChannel 通过TCP协议,读写网络中的数据
-
ServerSocketChannel 可以监听新建立的TCP连接,就像Web服务器一样,对每个新建立的连接都创建一个SocketChannel
金三银四读者福利:整理好的 金三银四面试资料集锦 分享。
FileChannel 示例
packagesuccess;
importjava.io.FileNotFoundException;
imp