美文网首页
java NIO(一)Channel

java NIO(一)Channel

作者: devel_carl | 来源:发表于2017-06-19 10:21 被阅读0次

    java NIO(一)Channel

    nio中的channel与流的区别在于,流的读写通常是单向的,而通道可以异步的读写,也就是说这个channel可以读数据到缓冲区,缓冲区也可以写数据到channel

    Channel的实现

    Java NIO中最重要的通道实现有以下几种

    FileChannel

    DatagramChannel

    SocketChannel

    ServerSocketChannel

    FileChannel从文件中读写数据

    DatagramChannel可以通过UDP读写网络中的数据

    SocketChannel能通过TCP读写网络中的数据

    ServerSocketChannel可以监听新进来的TCP连接,每一个新进来的连接都会创建一个SocketChannel

    下面是一个例子

    try {
                RandomAccessFile aFile = new RandomAccessFile(
                        "Config.xml","rw");
                FileChannel inChannel = aFile.getChannel();
    
                ByteBuffer buffer = ByteBuffer.allocate(48);
    
                int byteRead = inChannel.read(buffer);
    
                while (byteRead != -1){
                    System.out.println("Read "+byteRead);
                    buffer.flip();
    
                    while (buffer.hasRemaining())
                        System.out.print((char) buffer.get());
    
                    buffer.clear();
                    byteRead = inChannel.read(buffer);
                }
    
                aFile.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
    

    相关文章

      网友评论

          本文标题:java NIO(一)Channel

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