Spec-Zone .ru
спецификации, руководства, описания, API
 Платформа Java™
Стандарт Эд. 7

Пакет java.nio.channels

Определяет каналы, которые представляют соединения с объектами, которые способны к выполнению операций ввода-вывода, таковы как файлы и сокеты; определяет селекторы, для мультиплексированных, неблокирующих операций ввода-вывода.

См.: Описание

Пакет java.nio.channels Описание

Определяет каналы, которые представляют соединения с объектами, которые способны к выполнению операций ввода-вывода, таковы как файлы и сокеты; определяет селекторы, для мультиплексированных, неблокирующих операций ввода-вывода.

Каналы

Описание

Channel Связь для операций ввода-вывода
  ReadableByteChannel Может читать в буфер
    ScatteringByteChannel   Может читать в последовательность буферов
  WritableByteChannel Может записать из буфера
    GatheringByteChannel Может записать из последовательности буферов
  ByteChannel Может чтение-запись к/от буферу
    SeekableByteChannel A ByteChannel соединенный с объектом, который содержит последовательность переменной длины байтов
  AsynchronousChannel Поддерживает асинхронные операции ввода-вывода.
    AsynchronousByteChannel Может считать и записать байты асинхронно
  NetworkChannel Канал к сетевому сокету
    MulticastChannel Может присоединиться к интернет-Протоколу (IP) многоадресные группы
Channels Служебные методы для взаимодействия канала/потока

Канал представляет открытое соединение с объектом, таким как аппаратное устройство, файл, сетевой сокет, или компонент программы, который способен к выполнению того или более отличных операций ввода-вывода, например чтения или записи. Как определено в Channel интерфейс, каналы или открыты или закрываются, и они и асинхронно closeable и прерывистые.

Channel интерфейс расширяется несколькими другими интерфейсами.

ReadableByteChannel интерфейс определяет a read метод, который читает байты из канала в буфер; точно так же WritableByteChannel интерфейс определяет a write метод, который пишет байты от буфера до канала. ByteChannel интерфейс объединяет эти два интерфейса для общего падежа каналов, которые могут и считать и записать байты. SeekableByteChannel интерфейс расширяется ByteChannel интерфейс с методами к query и modify текущая позиция канала, и size.

ScatteringByteChannel и GatheringByteChannel интерфейсы расширяются ReadableByteChannel и WritableByteChannel интерфейсы, соответственно, добавляя read и write методы, которые берут последовательность буферов, а не единственного буфера.

NetworkChannel интерфейс определяет методы к bind сокет канала, получите адрес, с которым сокет связывается, и методы к get и set опции сокета. MulticastChannel интерфейс определяет методы, чтобы присоединиться к интернет-Протоколу (IP) многоадресные группы.

Channels служебный класс определяет статические методы, которые поддерживают взаимодействие потоковых классов java.io пакет с классами канала этого пакета. Соответствующий канал может быть создан из InputStream или OutputStream, и наоборот InputStream или OutputStream может быть создан из канала. A Reader может быть создан, который использует данный набор символов, чтобы декодировать байты от данного читаемого канала байта, и наоборот a Writer может быть создан, который использует данный набор символов, чтобы закодировать символы в байты и записать им в данный перезаписываемый канал байта.

Каналы файла

Описание

FileChannel Чтения, записи, карты, и управляют файлами
FileLock Блокировка на (область a) файл
MappedByteBuffer   Прямой буфер байта, отображенный на область файла

FileChannel класс поддерживает обычные операции чтения байтов от, и запись байтов к, канал, соединенный с файлом, так же как таковыми из запросов и изменения текущей позиции файла и усечения файла к определенному размеру. Это определяет методы для того, чтобы получить, соединяет целый файл или на определенной области файла; эти методы возвращают экземпляры FileLock класс. Наконец, это определяет методы для того, чтобы вынудить обновления к файлу быть записанными устройству хранения данных, которое содержит это, для того, чтобы эффективно передать байты между файлом и другими каналами, и для того, чтобы отобразить область файла непосредственно в память.

A FileChannel создается, вызывая одни из его помех open методы, или вызывая getChannel метод a FileInputStream, FileOutputStream, или RandomAccessFile возвратить канал файла, соединенный с тем же самым базовым файлом как java.io класс.

Мультиплексированный, неблокирующий ввод-вывод

Описание

SelectableChannel Канал, который может быть мультиплексирован
  DatagramChannel Канал к ориентированному на дейтаграмму сокету
  Pipe.SinkChannel Конец записи канала
  Pipe.SourceChannel Конец чтения канала
  ServerSocketChannel   Канал к потоковому сокету слушания
  SocketChannel Канал для потокового соединительного сокета
Selector Мультиплексор выбираемых каналов
SelectionKey Маркер, представляющий регистрацию
из канала с  селектором
Pipe Два канала, которые формируют однонаправленный канал

Мультиплексированный, неблокирующий ввод-вывод, который намного больше масштабируем чем ориентированный на поток, блокируя ввод-вывод, обеспечивается селекторами, выбираемыми каналами, и ключами выбора.

Селектор является мультиплексором выбираемых каналов, которые поочередно являются специальным типом канала, который может быть помещен в неблокирование режима. Выполнять мультиплексированные операции ввода-вывода, один или более выбираемых каналов сначала создаются, помещаются в неблокирование режима, и registered с селектором. Регистрация канала определяет набор операций ввода-вывода, которые будут протестированы на готовность селектором, и возвращают ключ выбора, который представляет регистрацию.

Как только некоторые каналы были зарегистрированы в селекторе, работа выбора может быть выполнена, чтобы обнаружить, который каналы, если таковые вообще имеются, стали готовыми выполнить один или больше операций, в которых был ранее объявлен интерес. Если канал будет готов тогда ключ, возвращенный, когда это было зарегистрировано, то будет добавлен к выбранному набору ключей селектора. Набор ключей, и ключи в пределах него, могут быть исследованы, чтобы определить операции, к которым каждый канал готов. От каждого манипулируют, можно получить соответствующий канал, чтобы выполнить независимо от того, что операции ввода-вывода требуются.

То, что ключ выбора указывает, что его канал готов к некоторой работе, является подсказкой, но не гарантией, что такая работа может быть выполнена потоком, не заставляя поток блокировать. Обязательно, чтобы кодировали, который выполняет мультиплексированный ввод-вывод быть записанным, чтобы проигнорировать эти подсказки, когда они, оказывается, являются неправильными.

Этот пакет определяет классы выбираемого канала, соответствующие DatagramSocket, ServerSocket, и Socket классы, определенные в java.net пакет. Незначительные изменения к этим классам были сделаны, чтобы поддерживать сокеты, которые связываются с каналами. Этот пакет также определяет простой класс, который реализует однонаправленные каналы. Во всех случаях новый выбираемый канал создается, вызывая статический метод open соответствующего класса. Если канал будет нуждаться в связанном сокете тогда, то сокет будет создаваться как побочный эффект этой работы.

Реализация селекторов, выбираемых каналов, и ключей выбора может быть заменена, "включая" альтернативное определение или экземпляр SelectorProvider класс, определенный в java.nio.channels.spi пакет. Не ожидается, что много разработчиков фактически используют это средство; это обеспечивается прежде всего так, чтобы сложные пользователи могли использовать в своих интересах определенные для операционной системы механизмы I/O-multiplexing, когда очень высокая производительность требуется.

Большая часть бухгалтерии и синхронизации, требуемой реализовывать абстракции multiplexed-I/O, выполняется AbstractInterruptibleChannel, AbstractSelectableChannel, AbstractSelectionKey, и AbstractSelector классы в java.nio.channels.spi пакет. Определяя пользовательского селекторного провайдера, только AbstractSelector и AbstractSelectionKey классы должны быть разделены на подклассы непосредственно; пользовательские классы канала должны расширить соответствующее SelectableChannel подклассы определяются в этом пакете.

Асинхронный ввод-вывод

Описание

AsynchronousFileChannel Асинхронный канал для того, чтобы читать, писать, и управлять файлом
AsynchronousSocketChannel Асинхронный канал к потоковому соединительному сокету
AsynchronousServerSocketChannel   Асинхронный канал к потоковому сокету слушания
CompletionHandler Обработчик для того, чтобы использовать результат асинхронной работы
AsynchronousChannelGroup Группировка асинхронных каналов с целью разделения ресурсов

Asynchronous channels специальный тип канала, способного к асинхронным операциям ввода-вывода. Асинхронные каналы неблокируют и определяют методы, чтобы инициировать асинхронные операции, возвращаясь a Future представление результата на ожидании каждой работы. Future может использоваться, чтобы опросить или ожидать результата работы. Асинхронные операции ввода-вывода могут также определить a CompletionHandler вызвать, когда работа завершается. Обработчик завершения является пользователем, предоставленным коду, который выполняется, чтобы использовать результат работы ввода-вывода.

Этот пакет определяет классы асинхронного канала, которые соединяются с потоковым сокетом соединения или слушания, или ориентированным на дейтаграмму сокетом. Это также определяет AsynchronousFileChannel класс для асинхронного чтения, записи, и управления файлом. Как с FileChannel это поддерживает операции, чтобы усечь файл к определенному размеру, обновления силы к файлу, который будет записан устройству хранения данных, или будет получать, соединяет целый файл или на определенной области файла. В отличие от этого FileChannel это не определяет методы для того, чтобы отобразить область файла непосредственно в память. Где память отображенный ввод-вывод требуется, тогда a FileChannel может использоваться.

Асинхронные каналы связываются с асинхронной группой канала с целью разделения ресурсов. У группы есть связанное ExecutorService к которому задачи представляются, чтобы обработать события ввода-вывода и диспетчеризировать обработчикам завершения, которые используют результат асинхронных операций, выполняемых на каналах в группе. Группа может дополнительно быть определена, создавая канал, или канал может быть связан с группой по умолчанию. Сложные пользователи могут хотеть создать свои собственные асинхронные группы канала или сконфигурировать ExecutorService это будет использоваться для группы по умолчанию.

Как с селекторами, implementatin асинхронных каналов может быть заменен, "включая" альтернативное определение или экземпляр AsynchronousChannelProvider класс, определенный в java.nio.channels.spi пакет. Не ожидается, что много разработчиков фактически используют это средство; это обеспечивается прежде всего так, чтобы сложные пользователи могли использовать в своих интересах определенные для операционной системы асинхронные механизмы ввода-вывода, когда очень высокая производительность требуется.


Если не указано иное, передача параметра null конструктору или методу в любом классе или интерфейсу в этом пакете вызовет a NullPointerException быть брошенным.

С тех пор:
1.4
 Платформа Java™
Стандарт Эд. 7

Представьте ошибку или функцию
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.