美文网首页一位攻城狮的自我修养
Java NIO中的通道详解!分析说明通道Channel的特点和

Java NIO中的通道详解!分析说明通道Channel的特点和

作者: 攻城狮Chova | 来源:发表于2022-01-04 22:40 被阅读0次
    Java NIO 通道

    Channel的特点

    • Java NIO的通道的特点:
      • 既可以从通道中读取数据,又可以写数据到通道,通道的读写是双向的
      • 通道可以异步读写
      • 通道中的数据总是要先读到一个Buffer, 或者是从一个Buffer写入

    Channel的实现

    • Java NIO的通道的重要实现:
      • FileChannel: 从文件中读取数据
      • DatagramChannel: 通过UDP读取网络中的数据
      • SocketChannel: 通过TCP读取网络中的数据
      • ServerSocketChannel: 可以监听新进来的TCP连接,对每一个新进来的连接都会创建一个SocketChannel

    Channel实例

    • 使用FileChannel读取数据到Buffer中:
    RandomAccessFile file = new RandomAccessFile("data/nio-data.txt", "rw");
    FileChannel channel = file.getChannel();
    
    ByteBuffer buffer = ByteBuffer.allocate(64);
    
    int bytesRead = channel.read(buffer);
    while (bytesRead != -1) {
        System.out.println("Read:" + bytesRead);
        buffer.flip();
        
        while (buffer.hasRemaining()) {
            System.out.println((char) buf.get());
        }
    
        buffer.clear();
        bytesBuffer = channel.read(buffer);
    }
    file.close();
    
    • 注意buffer.flip() 的调用:
      • 首先读取数据到Buffer
      • 然后反转Buffer
      • 接着再从Buffer中读取数据

    相关文章

      网友评论

        本文标题:Java NIO中的通道详解!分析说明通道Channel的特点和

        本文链接:https://www.haomeiwen.com/subject/bkiccrtx.html