| java.nio.channels.spi | Service-provider classes for the java.nio.channels package. |
| AsynchronousByteChannel | An asynchronous channel that can read and write bytes. | code | html |
| AsynchronousChannel | A channel that supports asynchronous I/O operations. | code | html |
| ByteChannel | A channel that can read and write bytes. | code | html |
| Channel | A nexus for I/O operations. | code | html |
| CompletionHandler | A handler for consuming the result of an asynchronous I/O operation. | code | html |
| GatheringByteChannel | A channel that can write bytes from a sequence of buffers. | code | html |
| InterruptibleChannel | A channel that can be asynchronously closed and interrupted. | code | html |
| MulticastChannel | A network channel that supports Internet Protocol (IP) multicasting. | code | html |
| NetworkChannel | A channel to a network socket. | code | html |
| ReadableByteChannel | A channel that can read bytes. | code | html |
| ScatteringByteChannel | A channel that can read bytes into a sequence of buffers. | code | html |
| SeekableByteChannel | A byte channel that maintains a current position and allows the position to be changed. | code | html |
| WritableByteChannel | A channel that can write bytes. | code | html |
| AsynchronousChannelGroup | A grouping of asynchronous channels for the purpose of resource sharing. | code | html |
| AsynchronousFileChannel | An asynchronous channel for reading, writing, and manipulating a file. | code | html |
| AsynchronousServerSocketChannel | An asynchronous channel for stream-oriented listening sockets. | code | html |
| AsynchronousSocketChannel | An asynchronous channel for stream-oriented connecting sockets. | code | html |
| DatagramChannel | A selectable channel for datagram-oriented sockets. | code | html |
| FileChannel | A channel for reading, writing, mapping, and manipulating a file. | code | html |
| FileLock | A token representing a lock on a region of a file. | code | html |
| MembershipKey | A token representing the membership of an Internet Protocol (IP) multicast group. | code | html |
| Pipe | A pair of channels that implements a unidirectional pipe. | code | html |
| Pipe.SinkChannel | A channel representing the writable end of a Pipe . | code | html |
| Pipe.SourceChannel | A channel representing the readable end of a Pipe . | code | html |
| SelectableChannel | A channel that can be multiplexed via a Selector . | code | html |
| SelectionKey | A token representing the registration of a SelectableChannel with a Selector . | code | html |
| Selector | A multiplexor of SelectableChannel objects. | code | html |
| ServerSocketChannel | A selectable channel for stream-oriented listening sockets. | code | html |
| SocketChannel | A selectable channel for stream-oriented connecting sockets. | code | html |
| AlreadyConnectedException | An {@code AlreadyConnectedException} is thrown when an attempt is made to connect a SocketChannel that is already connected. | code | html |
| AsynchronousCloseException | An {@code AsynchronousCloseException} is thrown when the underlying channel for an I/O operation is closed by another thread. | code | html |
| CancelledKeyException | A {@code CancelledKeyException} is thrown when an invalid selection key is used. | code | html |
| Channels | Utility methods for channels and streams. | code | html |
| Channels.ReadableByteChannelImpl | code | html | |
| Channels.WritableByteChannelImpl | code | html | |
| ClosedByInterruptException | A {@code ClosedByInterruptException} is thrown when a thread is interrupted in a blocking I/O operation. | code | html |
| ClosedChannelException | A {@code ClosedChannelException} is thrown when a channel is closed for the type of operation attempted. | code | html |
| ClosedSelectorException | A {@code ClosedSelectorException} is thrown when a selector is closed and an I/O operation is attempted. | code | html |
| ConnectionPendingException | A {@code ConnectionPendingException} is thrown when an attempt is made to connect a SocketChannel that has a non-blocking connection already underway. | code | html |
| FileChannel.MapMode | A typesafe enumeration for file-mapping modes. | code | html |
| FileLockInterruptionException | A {@code FileLockInterruptionException} is thrown when a thread is interrupted while waiting to acquire a file lock. | code | html |
| IllegalBlockingModeException | An {@code IllegalBlockingModeException} is thrown when an operation that requires a specific blocking mode is invoked on a channel that is in a different blocking mode. | code | html |
| IllegalSelectorException | An {@code IllegalSelectorException} is thrown when a call is made to register a channel on a selector that has been created by a different provider. | code | html |
| NoConnectionPendingException | A {@code NoConnectionPendingException} is thrown if {@code SocketChannel}'s finishConnect method is called before the {@code SocketChannel}'s SocketChannel#connect(java.net.SocketAddress) connect} method completed without error. | code | html |
| NonReadableChannelException | A {@code NonReadableChannelException} is thrown when attempting to read from a channel that is not open for reading. | code | html |
| NonWritableChannelException | A {@code NonWritableChannelException} is thrown when attempting to write to a channel that is not open for writing. | code | html |
| NotYetBoundException | A {@code NotYetBoundException} is thrown if the server socket channel is not bound before an I/O operation is made. | code | html |
| NotYetConnectedException | A {@code NotYetConnectedException} is thrown if the socket channel is not connected before an I/O operation is invoked. | code | html |
| OverlappingFileLockException | An {@code OverlappingFileLockException} is thrown when attempting to acquire a lock that overlaps an existing or pending lock held by this process. | code | html |
| UnresolvedAddressException | An {@code UnresolvedAddressException} is thrown when trying to use an unresolved network address in a network operation. | code | html |
| UnsupportedAddressTypeException | An {@code UnsupportedAddressTypeException} is thrown when connecting or binding to an unsupported address type. | code | html |
| VMChannels | code | html |
Channels
Description
java.nio.channels.Channel A nexus for I/O operations java.nio.channels.ReadableByteChannel Can read into a buffer java.nio.channels.ScatteringByteChannel Can read into a sequence of buffers java.nio.channels.WritableByteChannel Can write from a buffer java.nio.channels.GatheringByteChannel Can write from a sequence of buffers java.nio.channels.ByteChannel Can read/write to/from a buffer java.nio.channels.Channels Utility methods for channel/stream interoperation
A channel represents an open connection to an entity such as a hardware device, a file, a network socket, or a program component that is capable of performing one or more distinct I/O operations, for example reading or writing. As specified in the java.nio.channels.Channel interface, channels are either open or closed, and they are both asynchronously closeable and interruptible.
The java.nio.channels.Channel interface is extended by several other interfaces, each of which specifies a new I/O operation.
The java.nio.channels.ReadableByteChannel interface specifies a read method that reads bytes from the channel into a buffer; similarly, the java.nio.channels.WritableByteChannel interface specifies a write method that writes bytes from a buffer to the channel. The java.nio.channels.ByteChannel interface unifies these two interfaces for the common case of channels that can both read and write bytes.
The java.nio.channels.ScatteringByteChannel and java.nio.channels.GatheringByteChannel interfaces extend the java.nio.channels.ReadableByteChannel and java.nio.channels.WritableByteChannel interfaces, respectively, adding read and write methods that take a sequence of buffers rather than a single buffer.
The java.nio.channels.Channels utility class defines static methods that support the interoperation of the stream classes of the java.io package with the channel classes of this package. An appropriate channel can be constructed from an java.io.InputStream or an java.io.OutputStream , and conversely an java.io.InputStream or an java.io.OutputStream can be constructed from a channel. A java.io.Reader can be constructed that uses a given charset to decode bytes from a given readable byte channel, and conversely a java.io.Writer can be constructed that uses a given charset to encode characters into bytes and write them to a given writable byte channel.
File channels
Description
java.nio.channels.FileChannel Reads, writes, maps, and manipulates files java.nio.channels.FileLock A lock on a (region of a) file java.nio.MappedByteBuffer A direct byte buffer mapped to a region of a file
The java.nio.channels.FileChannel class supports the usual operations of reading bytes from, and writing bytes to, a channel connected to a file, as well as those of querying and modifying the current file position and truncating the file to a specific size. It defines methods for acquiring locks on the whole file or on a specific region of a file; these methods return instances of the java.nio.channels.FileLock class. Finally, it defines methods for forcing updates to the file to be written to the storage device that contains it, for efficiently transferring bytes between the file and other channels, and for mapping a region of the file directly into memory. This last operation creates an instance of the java.nio.MappedByteBuffer class, which extends the java.nio.ByteBuffer class with several file-related operations.
A getChannel method has been added to each of the FileInputStream , FileOutputStream , and RandomAccessFile classes of the java.io package. Invoking this method upon an instance of one of
these classes will return a file channel connected to the underlying file.
Multiplexed, non-blocking I/O Description Multiplexed, non-blocking I/O, which is much more scalable than
thread-oriented, blocking I/O, is provided by selectors, selectable
channels, and selection keys.
A selector is a multiplexor of selectable channels, which in turn are
a special type of channel that can be put into non-blocking mode. To perform
multiplexed I/O operations, one or more selectable channels are first created,
put into non-blocking mode, and registered Once some channels have been registered with a selector, a selection operation can be performed in
order to discover which channels, if any, have become ready to perform one or
more of the operations in which interest was previously declared. If a channel
is ready then the key returned when it was registered will be added to the
selector's selected-key set. The key set, and the keys within it, can
be examined in order to determine the operations for which each channel is
ready. From each key one can retrieve the corresponding channel in order to
perform whatever I/O operations are required.
That a selection key indicates that its channel is ready for some operation
is a hint, but not a guarantee, that such an operation can be performed by a
thread without causing the thread to block. It is imperative that code that
performs multiplexed I/O be written so as to ignore these hints when they prove
to be incorrect.
This package defines selectable-channel classes corresponding to the java.net.DatagramSocket , java.net.ServerSocket , and java.net.Socket classes defined in the java.net package.
Minor changes to these classes have been made in order to support sockets that
are associated with channels. This package also defines a simple class that
implements unidirectional pipes. In all cases, a new selectable channel is
created by invoking the static open method of the corresponding class.
If a channel needs an associated socket then a socket will be created as a side
effect of this operation.
The implementation of selectors, selectable channels, and selection keys
can be replaced by "plugging in" an alternative definition or instance of the
java.nio.channels.spi.SelectorProvider class defined in the java.nio.channels.spi package. It is not expected that many developers
will actually make use of this facility; it is provided primarily so that
sophisticated users can take advantage of operating-system-specific
I/O-multiplexing mechanisms when very high performance is required.
Much of the bookkeeping and synchronization required to implement the
multiplexed-I/O abstractions is performed by the java.nio.channels.spi.AbstractInterruptibleChannel , java.nio.channels.spi.AbstractSelectableChannel , java.nio.channels.spi.AbstractSelectionKey , and java.nio.channels.spi.AbstractSelector classes in the java.nio.channels.spi package. When defining a custom selector provider,
only the java.nio.channels.spi.AbstractSelector and java.nio.channels.spi.AbstractSelectionKey classes should be subclassed
directly; custom channel classes should extend the appropriate java.nio.channels.SelectableChannel subclasses defined in this package.
Unless otherwise noted, passing a null argument to a constructor
or method in any class or interface in this package will cause a NullPointerException to be thrown.
@since 1.4
@author Mark Reinhold
@author JSR-51 Expert Group
java.nio.channels.SelectableChannel
A channel that can be multiplexed java.nio.channels.DatagramChannel
A channel for a java.net.DatagramSocket java.nio.channels.Pipe.SinkChannel
The write end of a pipe java.nio.channels.Pipe.SourceChannel
The read end of a pipe java.nio.channels.ServerSocketChannel
A channel for a java.net.ServerSocket java.nio.channels.SocketChannel
A channel for a java.net.Socket java.nio.channels.Selector
A multiplexor of selectable channels java.nio.channels.SelectionKey
A token representing the registration
of a channel
with a selectorjava.nio.channels.Pipe
Two channels that form a unidirectional pipe
with a selector. Registering a channel specifies the set of I/O operations
that will be tested for readiness by the selector, and returns a selection key that represents the
registration.