Java NIO-2.Channel

Java NIO 的Channels和流(stream)很像,但是有如下区别:

  • Channels既能读又能写,Stream只能读或者写
  • Channels能异步读写
  • Channels只能读到Buffer中,或者从Buffer写入

Channel实例

以下是Java NIO中重要的的Channel实例:

  • FileChannel:从/往文件中读/写
  • DatagramChannel:通过UDP读写网络数据
  • SocketChannel:通过TCP读写网络数据
  • ServerSocketChannel:监听接入的TCP连接,就像web服务器那样。对于每个接入进来的TCP连接都创建一个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);

文件nio-data.txt:

1234567890
1234567890
1234567890
1234567890
1234567890
1234567890

输出结果为:

Read 48
1234567890
1234567890
1234567890
1234567890
1234Read 17
567890
1234567890
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java I...
    zhisheng_blog阅读 1,193评论 0 7
  • Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java I...
    JackChen1024阅读 7,875评论 1 143
  • 前言: 之前的文章《Java文件IO常用归纳》主要写了Java 标准IO要注意的细节和技巧,由于网上各种学习途径,...
    androidjp阅读 3,215评论 0 22
  • (转载说明:本文非原创,转载自http://ifeve.com/java-nio-all/) Java NIO: ...
    数独题阅读 861评论 0 3
  • 蜂群这样一个由几万只群氓组成的昆虫群体被昆虫学家惠勒称为“超级有机体”,同时惠勒还从这其中看到了“涌现”的特征,蜂...
    书愿阅读 1,281评论 0 0

友情链接更多精彩内容