<div> JavaScript is disabled on your browser.
Skip navigation links
Java™ Platform
Standard Ed. 8
compact1

Package java.nio.channels

定义了渠道,它代表的是能够执行I/O操作的实体连接,如文件和套接字;定义选择器,多路复用,非阻塞I/O操作。

See: 描述

Package java.nio.channels Description

定义了渠道,它代表的是能够执行I/O操作的实体连接,如文件和套接字;定义选择器,多路复用,非阻塞I/O操作。
Channels 描述
Channel A nexus for I/O operations
  ReadableByteChannel Can read into a buffer
    ScatteringByteChannel   Can read into a sequence of buffers
  WritableByteChannel Can write from a buffer
    GatheringByteChannel Can write from a sequence of buffers
  ByteChannel Can read/write to/from a buffer
    SeekableByteChannel A ByteChannel connected to an entity that contains a variable-length sequence of bytes
  AsynchronousChannel Supports asynchronous I/O operations.
    AsynchronousByteChannel Can read and write bytes asynchronously
  NetworkChannel A channel to a network socket
    MulticastChannel Can join Internet Protocol (IP) multicast groups
Channels Utility methods for channel/stream interoperation

一个通道代表等硬件设备,实体打开的连接文件,网络套接字,或者一个程序组件能够执行一个或多个不同的I/O操作,例如阅读或写作。在Channel指定界面,通道被打开或关闭,他们都异步闭合和可中断。

Channel接口是由几个其他接口扩展。

ReadableByteChannel接口指定一个read方法读取到缓冲区中的字节通道;同样,在WritableByteChannel接口指定一个write方法写入的字节从缓冲区的通道。的ByteChannel接口相结合这两种接口,可以读取和写入的字节通道的常见案例。SeekableByteChannel接口的扩展方法querymodify信道的当前位置的ByteChannel接口,其size

ScatteringByteChannelGatheringByteChannel接口扩展ReadableByteChannelWritableByteChannel接口,分别加入readwrite方法,采取一个序列的缓冲区而不是一个单一的缓冲。

NetworkChannel接口指定的方法bind通道的插座,获得该套接字绑定的地址,和方法getset套接字选项。MulticastChannel接口指定的方法加入到互联网协议(IP)的组播组。

Channels实用类定义的静态方法,支持的java.io包流类的互操作与本频道包装类。一个合适的通道可以由一个InputStreamOutputStream,反过来InputStreamOutputStream可以构造一个通道。一个Reader可以构造使用给定的字符集解码从一个给定的可读字节通道字节,相反,Writer可以构造使用给定的字符集的字符编码为字节写一个给定的可写字节通道。

File channels 描述
FileChannel Reads, writes, maps, and manipulates files
FileLock A lock on a (region of a) file
MappedByteBuffer   A direct byte buffer mapped to a region of a file

FileChannel类支持读取字节从平时的作业,写字节,一个通道连接到一个文件,以及那些查询和修改当前文件位置和截断文件到一个特定的大小。它定义了方法获取整个文件或文件的一个特定区域锁;这些方法返回的FileLock类的实例。最后,它定义了将更新的文件强制写入包含它的存储设备的方法,用于有效地在文件和其他信道之间传输字节,并将文件的区域映射到内存中。

一个FileChannel是通过调用一个静态方法,它open创建,或通过调用一个FileInputStreamFileOutputStreamgetChannel方法,或RandomAccessFile返回一个连接到同一个文件的java.io类文件通道。

Multiplexed, non-blocking I/O

描述

SelectableChannel A channel that can be multiplexed
  DatagramChannel A channel to a datagram-oriented socket
  Pipe.SinkChannel The write end of a pipe
  Pipe.SourceChannel The read end of a pipe
  ServerSocketChannel   A channel to a stream-oriented listening socket
  SocketChannel A channel for a stream-oriented connecting socket
Selector A multiplexor of selectable channels
SelectionKey A token representing the registration
of a channel with a selector
Pipe Two channels that form a unidirectional pipe

复用,非阻塞I/O,这比更为可扩展的多线程、I/O阻塞,是由选择器,选择通道提供,并选择键。

一个selector是复用器selectable channels,这又是一种特殊类型的通道,可以投入non-blocking mode。执行多路复用I/O操作,一个或一个以上是第一次创建可选的渠道,为非阻塞模式,和一个选择器registered。注册一个通道指定的I/O操作,将测试由选择的准备,并返回一个selection key代表注册。

一旦一些渠道已经具有选择注册,一selection operation可以发现哪些渠道,如果有的话,已经准备执行一个或一个以上的操作,感兴趣的是先前宣布的。如果一个通道准备那么关键回来时它被注册将被添加到选择器的选择键集。键集,和它内的键,可以检查,以确定每个通道准备的操作。从每个键可以检索相应的信道,以执行任何I / O操作是必需的。

一个选择键表示它的通道已经准备好了一些操作是一个提示,但不是一个保证,这样的操作可以由一个线程执行,而不会导致线程块。重要的是,代码执行复用的I / O被写入,以忽略这些提示时,他们被证明是不正确的。

此包定义了可选的通道类对应的DatagramSocketServerSocket,和Socket类中定义的java.net包。为支持与信道相关联的套接字,已对这些类进行了小的更改。这个软件包还定义了一个实现单向管道的简单类。在所有的情况下,一个新的可选择的渠道是通过调用相应的类的静态方法创建的open。如果一个通道需要一个相关的套接字,那么这个操作的一个副作用将被创建一个套接字。

选择器,实现可选择的渠道和选择键可以被“堵”在java.nio.channels.spi包中定义的SelectorProvider类的另一种定义或实例。据预计,很多开发商会利用这个设备;它主要是提供这样复杂的用户可以利用特定的操作系统的I / o-multiplexing机制时,很高的性能要求。

多的要求实施的multiplexed-i I/O抽象记账和同步的AbstractInterruptibleChannelAbstractSelectableChannelAbstractSelectionKey执行,并在java.nio.channels.spiAbstractSelector类。定义一个自定义的选择供应商时,只有AbstractSelectorAbstractSelectionKey类应该直接继承;自定义信道类应该扩展在这个包中定义适当的SelectableChannel子类。

Asynchronous I/O 描述
AsynchronousFileChannel An asynchronous channel for reading, writing, and manipulating a file
AsynchronousSocketChannel An asynchronous channel to a stream-oriented connecting socket
AsynchronousServerSocketChannel   An asynchronous channel to a stream-oriented listening socket
CompletionHandler A handler for consuming the result of an asynchronous operation
AsynchronousChannelGroup A grouping of asynchronous channels for the purpose of resource sharing

Asynchronous channels是一种特殊类型的异步I/O操作通道。异步通道无阻塞的定义方法来启动异步操作,返回一个Future代表等待结果中的每一个操作。的Future可用于调查或等待操作的结果。异步I/O操作,也可以指定要调用的操作完成时,一个CompletionHandler。一个完成处理程序是用户提供的代码,该代码执行到消耗I / O操作的结果。

此包定义了连接到一个面向流的连接或监听套接字异步通道类,或面向数据报套接字。它还定义了AsynchronousFileChannel类异步阅读,写作,和操作文件。为支持操作截断文件到一个特定大小的FileChannel,力更新的文件被写入到存储设备,或获取锁在整个文件或文件的特定区域。不像它没有定义的映射文件的区域直接进入内存的方法FileChannel。内存映射I/O是必需的,那么可以用一FileChannel

异步信道绑定到异步信道组以进行资源共享的目的。一组相关的ExecutorService,任务提交到处理I/O事件调度完成处理器消耗的异步操作在集团的渠道执行的结果。当创建通道或通道可以绑定到一个默认组时,该组可以选择指定。复杂的用户可能希望创建自己的异步信道组或配置ExecutorService将使用默认组。

与选择器,异步信道的实现可以被“堵”在java.nio.channels.spi包中定义的AsynchronousChannelProvider类的另一种定义或实例。这是没有预期,许多开发人员将实际利用这种设施,它主要是提供先进的用户可以利用操作系统特定的异步I / O机制时,非常高的性能是必需的。


除非另有说明,通过null实参构造函数或方法的任何类或接口在这个包会导致NullPointerException被。

从以下版本开始:
1.4
Skip navigation links
Java™ Platform
Standard Ed. 8

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.

本帮助文档是使用 《百度翻译》翻译,请与英文版配合使用 by--QQ:654638585