分享

Java nio入门教程详解(0014)

 360lec 2016-09-30

3.1.1 打开通道

通道是访问 I/O 服务的导管。正如我们在第一章中所讨论的,I/O 可以分为广义的两大类别: File I/O 和 Stream I/O。那么相应地有两种类型的通道也就不足为怪了,它们是文件(file)通道和套接字(socket)通道。如果您参考一下图 3-2,您就会发现有一个FileChannel类和三个socket通道类:SocketChannelServerSocketChannel DatagramChannel

通道可以以多种方式创建。Socket通道有可以直接创建新socket通道的工厂方法。但是一个FileChannel对象却只能通过在一个打开的RandomAccessFileFileInputStream FileOutputStream对象上调用getChannel()方法来获取。您不能直接创建一个FileChannel对象。File 和 socket 通道会在后面的章节中予以详细讨论。

  1. SocketChannel sc = SocketChannel.open();
  2. sc.connect (new InetSocketAddress ("somehost", someport));
  3. ServerSocketChannel ssc = ServerSocketChannel.open( );
  4. ssc.socket( ).bind (new InetSocketAddress (somelocalport));
  5. DatagramChannel dc = DatagramChannel.open( );
  6. RandomAccessFile raf = new RandomAccessFile ("somefile", "r");
  7. FileChannel fc = raf.getChannel();

在 3.5 节中您会发现,java.net的socket类也有新的getChannel()方法。这些方法虽然能返回一个相应的socket通道对象,但它们却并非新通道的来源,RandomAccessFile.getChannel()方法才是。只有在已经有通道存在的时候,它们才返回与一个 socket 关联的通道;它们永远不会创建新通道。

Java nio入门教程详解(十五)

0 0
我们认为:用户的主要目的,是为了获取有用的信息,而不是来点击广告的。因此本站将竭力做好内容,并将广告和内容进行分离,确保所有广告不会影响到用户的正常阅读体验。用户仅凭个人意愿和兴趣爱好点击广告。
我们坚信:只有给用户带来价值,用户才会给我们以回报。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多