java nio编程学习笔记(2)--channel

    xiaoxiao2021-04-15  45

    Channel与流的区别:

    1、Channel和Buffer之间的读写是双向的,流的读写是单向的

    2、Channel可以异步读写

    3、Channel的数据读写必须依赖于Buffer

    这些是Java NIO中最重要的通道的实现:

    FileChannelDatagramChannelSocketChannelServerSocketChannel

    基本的 Channel 示例

    下面是一个使用FileChannel读取数据到Buffer中的示例:

    01 RandomAccessFile aFile = newRandomAccessFile("data/nio-data.txt", "rw"); 02 FileChannel inChannel = aFile.getChannel(); 03   04 ByteBuffer buf = ByteBuffer.allocate(48); 05   06 int bytesRead = inChannel.read(buf); 07 while (bytesRead != -1) { 08   09 System.out.println("Read " + bytesRead); 10 buf.flip(); 11   12 while(buf.hasRemaining()){ 13 System.out.print((char) buf.get()); 14 } 15   16 buf.clear(); 17 bytesRead = inChannel.read(buf); 18 } 19 aFile.close();

    注意 buf.flip() 的调用,首先读取数据到Buffer,然后反转Buffer,接着再从Buffer中读取数据。下一节会深入讲解Buffer的更多细节。

    转载自 并发编程网 – ifeve.com
    转载请注明原文地址: https://ju.6miu.com/read-670997.html

    最新回复(0)