美文网首页
Java NIO -- Channel

Java NIO -- Channel

作者: shoulda | 来源:发表于2018-07-04 10:55 被阅读0次

    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 -- Channel

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