Java NIO Channel
来源:互联网 发布:php程序员职业规划 编辑:程序博客网 时间:2024/06/05 19:17
Java NIO Channels 和流有些许差异:
- Channels可以读和写,流通常只能是其中一种,读或者写
- Channels的读和写是异步的
- Channels总是将数据写入到Buffer或者从Buffer读取数据
如上所述,数据从channel读取到buffer中,从buffer中写入到channel,如下图:
Channel的实现
下面几个方面是Java NIO Channel的重要实现部分:
- FileChannel
- DatagramChannel
- SocketChannel
- ServerSocketChannel
FileChannel 从文件中读写数据。
DatagramChannel 能通过UDP读写网络中的数据。
SocketChannel 能通过TCP读写网络中的数据。
ServerSocketChannel可以监听新进来的TCP连接,像Web服务器那样。对每一个新进来的连接都会创建一个SocketChannel。
一个基本的Channel例子
以下是一个FileChannel 从文件读取数据到buffer的基本例子:
RandomAccessFile aFile = new RandomAccessFile("data/nio-data.txt", "rw"); FileChannel inChannel = aFile.getChannel(); ByteBuffer buf = ByteBuffer.allocate(48); int bytesRead = inChannel.read(buf); while (bytesRead != -1) { System.out.println("Read " + bytesRead); buf.flip(); while(buf.hasRemaining()){ System.out.print((char) buf.get()); } buf.clear(); bytesRead = inChannel.read(buf); } aFile.close();
注意 buf.flip() 的调用,首先读取数据到Buffer,然后flip buffer(译者注:类似于刷新缓冲区),接着再从Buffer中读取数据。
下一节会深入讲解Buffer的更多细节。
原文地址
0 0
- Java NIO Channel
- Java NIO Socket Channel
- Java NIO(3-Channel)
- Java NIO Channel
- Java NIO笔记 Channel
- Java NIO Channel
- Java NIO--Channel
- java NIO Channel
- Java NIO (二) Channel
- Java NIO Channel
- Java NIO Channel
- java NIO-Channel
- Java NIO Channel
- Java NIO之Channel
- java nio channel
- Java NIO Channel tranfer
- Java NIO Channel
- java NIO Channel详解
- 怎样设置虚拟机和主机文件共享
- Ten Ways to Check if an Integer Is a Power Of Two in C
- 3.3 Zend_Db_Table
- 集成patch到仓库
- iOS个人整理40-定位和地图
- Java NIO Channel
- 查看Android签名
- String的用法、StringBuffer和StringBuilder之间的区别
- Adb connection Error: EOF
- 自定义控件基础 onSaveInstanceState()
- Python中zip,filter,map和推导式列表的用法
- Zookeeper原理简介
- HDU 2059 龟兔赛跑(dp)
- 什么是环境变量?道理在这四个故事中