java NIO(一)Channel

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(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java I...
    JackChen1024阅读 7,630评论 1 143
  • (转载说明:本文非原创,转载自http://ifeve.com/java-nio-all/) Java NIO: ...
    数独题阅读 832评论 0 3
  • 前言: 之前的文章《Java文件IO常用归纳》主要写了Java 标准IO要注意的细节和技巧,由于网上各种学习途径,...
    androidjp阅读 2,978评论 0 22
  • (转载说明:本文非原创,转载自http://ifeve.com/java-nio-all/) Java NIO: ...
    柳岸阅读 833评论 0 3
  • 转自 http://www.ibm.com/developerworks/cn/education/java/j-...
    抓兔子的猫阅读 2,365评论 0 22