Java NIO -- Channel

java NIO的通道类似与流,但又有些不同。
1.即可以从通道中读数据,又可以写数据到通道,而流的读写一般都是单向的。
2.通道是可以异步读写的
3.通道中的数据总是要先读到一个Buffer,或者总是从一个Buffer写入。
从缓冲区写数据到Channel,从Channel读数据到缓冲区,如下图所示。


牛客.png

Channel的实现

这些是Java NIO中最重要的通道的实现
FileChannel :从文件读写数据
DatagramChannel:通过UDP读写网络中的数据
SocketChannel:可以通过TCP读写网络中的数据
ServerSocketChannel:监听新进来的TCP连接,想Web服务器那样,对每一个新进来的连接都会创建一个SocketChannel.

以下是一个Channel的基本示例:

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();

参考:http://ifeve.com/channels/

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java I...
    zhisheng_blog阅读 1,139评论 0 7
  • Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java I...
    编码前线阅读 2,293评论 0 5
  • Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java I...
    JackChen1024阅读 7,615评论 1 143
  • (转载说明:本文非原创,转载自http://ifeve.com/java-nio-all/) Java NIO: ...
    数独题阅读 829评论 0 3
  • 厨房篇 1 厨房布局应轻松合理,有助于做饭时保持好心情。理想厨房是厨房用具、调味品、餐具等物品,应该可以随身拿到,...
    子嫣_阅读 225评论 0 1