博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java NIO(三)Channel 通道
阅读量:6993 次
发布时间:2019-06-27

本文共 1024 字,大约阅读时间需要 3 分钟。

java nio channel 和 流有一些小小的区别:

  • 你能在channel进行读写二者,但是流只能进行读者其一。
  • channel能异步进行读写。
  • channel一般从(借助)buffer进行读写。

    如下图所示:

    img_ba76486545ee41994605dd9102bc621e.png
    image.png

Channel Implementations

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

  • FileChannel
  • DatagramChannel
  • SocketChannel
  • ServerSocketChannel
    The FileChannel 从文件读取数据。
    The DatagramChannel 可以通过UDP在网络上读写数据。
    The SocketChannel 可以通过TCP在网络上读写数据。
    The ServerSocketChannel允许您监听传入的TCP连接,就像Web服务器一样。 为每个传入的连接创建一个SocketChannel。

实战

Here is a basic example that uses a FileChannel to read some data into a Buffer:

一个简单的例子:用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()的调用,首先读入一个缓冲区,然后将内容弹出,然后读出数据。

转载地址:http://jjdvl.baihongyu.com/

你可能感兴趣的文章
准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure
查看>>
Qt学习之路(12): 菜单和工具条
查看>>
schema基本格式及xml引用xsd
查看>>
【转载】基于 Open vSwitch 的 OpenFlow 实践
查看>>
React Native 常用命令
查看>>
找回数据库密码
查看>>
db2 command list
查看>>
Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)...
查看>>
Java学习笔记:字符串处理
查看>>
动态设置控件的高度以及在父控件里的位置
查看>>
MySQL的事务处理以及隔离级别
查看>>
常见的Web攻击手段——XSS攻击
查看>>
CentOS最小安装之后做的一些小事
查看>>
【jQuery】----jQuery 多个库之间的冲突 (二)
查看>>
SSL证书卸载与SSI高级应用
查看>>
[Material Design] MaterialButton 效果进阶 动画自动移动进行对齐效果
查看>>
Redis5.0.4复制
查看>>
SurfaceView必知
查看>>
EventDOM:事件DOM
查看>>
Sonar 配置代码扫描规则 与 质量配置,设置各个语言默认的扫描规则
查看>>