This package is at the heart of the NIO API. A channel is a communication channel for transferring bytes from or to a java.nio.ByteBuffer . Channels serve a similar purpose to the InputStream and OutputStream classes of the java.io package, but are completely unrelated to those classes, and provide important features not available with the java.io API. The Channels class defines methods that bridge the java.io and java.nio.channels APIs, by returning channels based on streams and streams based on channels. The Channel interface simply defines methods for testing whether a channel is open and for closing a channel. The other interfaces in the package extend Channel and define read( ) and write( ) methods for reading bytes from the channel into one or more byte buffers and for writing bytes from one or more byte buffers to the channel. The FileChannel class defines an channel-based API for reading and writing from files (and also provides other important file functionality such as file locking and memory mapping that is not available through the java.io package). SocketChannel , ServerSocketChannel , and DatagramChannel are channels for communication over a network, and Pipe defines two inner classes that use the channel abstraction for communication between threads. The network and pipe channels are all subclasses of the SelectableChannel class, and may be put into nonblocking mode, in which calls to read( ) and write( ) return immediately, even if the channel is not ready for reading or writing. nonblocking IO and networking is not possible using the stream abstraction of the java.io and java.net packages, and is perhaps the most important new feature of the java.nio API. The Selector class is crucial to the efficient use of nonblocking channels: it allows a program to register interested in I/O operations on several different channels at once. A call to the select( ) method of a Selector will block until one of those channels becomes ready for I/O, and will then wake up. This technique is important for writing scalable high-performance network servers. See Selector and SelectionKey for details. Finally, this package allows for very fine-grained error handling by defining a large number of exception classes, several of which may be thrown by only a single method within the java.nio API. Interfacespublic interface ByteChannel extends ReadableByteChannel, WritableByteChannel; public interface Channel extends java.io.Closeable; public interface GatheringByteChannel extends WritableByteChannel; public interface InterruptibleChannel extends Channel; public interface ReadableByteChannel extends Channel; public interface ScatteringByteChannel extends ReadableByteChannel; public interface WritableByteChannel extends Channel; Classespublic final class Channels ; public abstract class DatagramChannel extends java.nio.channels.spi. AbstractSelectableChannel implements ByteChannel, GatheringByteChannel, ScatteringByteChannel; public abstract class FileChannel extends java.nio.channels.spi. AbstractInterruptibleChannel implements ByteChannel, GatheringByteChannel, ScatteringByteChannel; public static class FileChannel.MapMode ; public abstract class FileLock ; public abstract class Pipe ; public abstract static class Pipe.SinkChannel extends java.nio.channels.spi. AbstractSelectableChannel implements GatheringByteChannel, WritableByteChannel; public abstract static class Pipe.SourceChannel extends java.nio.channels.spi. AbstractSelectableChannel implements ReadableByteChannel, ScatteringByteChannel; public abstract class SelectableChannel extends java.nio.channels.spi. AbstractInterruptibleChannel implements Channel; public abstract class SelectionKey ; public abstract class Selector ; public abstract class ServerSocketChannel extends java.nio.channels.spi. AbstractSelectableChannel; public abstract class SocketChannel extends java.nio.channels.spi. AbstractSelectableChannel implements ByteChannel, GatheringByteChannel, ScatteringByteChannel; Exceptionspublic class AlreadyConnectedException extends IllegalStateException; public class CancelledKeyException extends IllegalStateException; public class ClosedChannelException extends java.io.IOException; public class AsynchronousCloseException extends ClosedChannelException; public class ClosedByInterruptException extends AsynchronousCloseException; public class ClosedSelectorException extends IllegalStateException; public class ConnectionPendingException extends IllegalStateException; public class FileLockInterruptionException extends java.io.IOException; public class IllegalBlockingModeException extends IllegalStateException; public class IllegalSelectorException extends IllegalArgumentException; public class NoConnectionPendingException extends IllegalStateException; public class NonReadableChannelException extends IllegalStateException; public class NonWritableChannelException extends IllegalStateException; public class NotYetBoundException extends IllegalStateException; public class NotYetConnectedException extends IllegalStateException; public class OverlappingFileLockException extends IllegalStateException; public class UnresolvedAddressException extends IllegalArgumentException; public class UnsupportedAddressTypeException extends IllegalArgumentException; |