美文网首页
JAVA NIO Channels(一)Channel对象

JAVA NIO Channels(一)Channel对象

作者: ShootHzj | 来源:发表于2017-08-19 12:27 被阅读16次

    Channels是java.nio的第二个主要创新,提供了跟IO服务的直接连接。Channel是bytebuffer,文件,或者socket之间传输数据的导管。Channel提供了平台无关的抽象,但仍然可以比拟现代操作系统上native代码的IO能力。

    public interface Channel {
      public boolean isOpen();
      public void close() throws IOException;
    }
    

    跟buffer不同,channel的实现在不同的操作系统上差距很大,所以channel只定义为一个接口,描述它可以做什么。通常情况下用native方法实现。只有两个方法,一个用来判断通道是否处于打开状态,一个用于关闭通道。

    InterruptibleChannel是一个标记接口,代表这个通道是可中断的,可中断的通道在运行它们的线程中断时有特殊的特性。

    IO分为两个大类,文件IO和流IO。通道也分为,文件通道和socket通道。Socket通道有工厂方法可以直接创建。但是一个文件通道不能够直接创建,只能够通过调用RandomAccessFile,FileInputStream,FileOutputStream的getChannel方法。你不能够直接创建一个FileChannel对象

    SocketChannel sc = SocketChannel.open();
    sc.connect(new InetSocketAddress("some host",someport);
    
    ServerSocketChannel ssc = new ServerSocketChannel.open();
    ssc.socket().bind(new InetSocketAddress(somelocalport));
    
    DatagramChannel dc = DatagramChannel.open();
    
    RandomAccessFile raf = new RandomAccessFile("somefile","r");
    FileChannel fc = raf.getChannel();
    

    相关文章

      网友评论

          本文标题:JAVA NIO Channels(一)Channel对象

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