JavaTM Platform
Standard Ed. 6

패키지 java.nio.channels

입출력 조작을 실행할 수 있는 엔티티 (파일, 소켓등)에의 접속을 나타내는 채널이나, 다중화 된 비블록 입출력 조작용의 셀렉터를 정의합니다.

참조처:
          설명

인터페이스의 개요
ByteChannel 바이트의 read와 기입을 할 수 있는 채널입니다.
Channel 입출력 조작에 관계하는 채널입니다.
GatheringByteChannel 버퍼 순서로부터 바이트를 기입할 수가 있는 채널입니다.
InterruptibleChannel 비동기의 클로즈나 인터럽트가 가능한 채널입니다.
ReadableByteChannel 바이트를 읽어낼 수가 있는 채널입니다.
ScatteringByteChannel 버퍼 순서에 바이트를 읽어들일 수가 있는 채널입니다.
WritableByteChannel 바이트를 기입할 수가 있는 채널입니다.
 

클래스의 개요
Channels 채널과 스트림을 위한 유틸리티 메소드입니다.
DatagramChannel 데이터 그램형 소켓의 선택 가능한 채널입니다.
FileChannel 파일의 읽어들여, 기입해, 매핑, 조작용 채널입니다.
FileChannel.MapMode 파일 매핑방식의 형태 보증된 열거입니다.
FileLock 파일 영역상의 락을 나타내는 토큰입니다.
Pipe 단방향 파이프를 구현하는 1조의 채널입니다.
Pipe.SinkChannel Pipe 의 기입측을 나타내는 채널입니다.
Pipe.SourceChannel Pipe 의 읽기측을 나타내는 채널입니다.
SelectableChannel Selector 경유로 다중화할 수 있는 채널입니다.
SelectionKey SelectableChannelSelector 에 등록되어 있는 것을 나타내는 토큰입니다.
Selector SelectableChannel 객체의 멀티플렉서입니다.
ServerSocketChannel 스트림형 리스닝소켓트용의 선택 가능한 채널입니다.
SocketChannel 스트림형 접속 소켓용의 선택 가능 채널입니다.
 

예외의 개요
AlreadyConnectedException 벌써 접속되고 있는 SocketChannel 에의 접속을 시도했을 때에 throw 되는, 체크되지 않는 예외입니다.
AsynchronousCloseException 다른 thread가 채널 또는 입출력 조작시에 블록 되는 채널의 일부를 클로즈 했을 때에 thread가 받는 체크 예외입니다.
CancelledKeyException 벌써 무효가 된 선택 키를 사용하려고 했을 때에 throw 되는 체크되지 않는 예외입니다.
ClosedByInterruptException thread가 채널에서의 입출력 조작으로 블록 되고 있는 것에도 불구하고, 다른 thread로부터 인터럽트를 받았을 경우에 수신하는 체크 예외입니다.
ClosedChannelException 클로즈 한 채널에 대한 입출력 조작을 실시하려고 했을 때, 또는 실행하려고 한 입출력 조작에 대해서 그 채널이 클로즈 되고 있는 경우에 throw 되는 체크 예외입니다.
ClosedSelectorException 클로즈 한 셀렉터에 대한 입출력 조작을 호출하려고 했을 때에 throw 되는 체크되지 않는 예외입니다.
ConnectionPendingException 비블록 접속 조작의 진행중에 SocketChannel 에 접속하려고 했을 때에 throw 되는, 체크되지 않는 예외입니다.
FileLockInterruptionException 파일 락의 획득을 대기하고 있는 thread에 대해서 다른 thread로부터 인터럽트가 있었을 때에 수취되는 체크 예외입니다.
IllegalBlockingModeException 블록 모드가 부정해요에, 채널상에서 블록 모드 고유의 조작을 호출했을 때에 throw 되는 체크되지 않는 예외입니다.
IllegalSelectorException 채널의 작성원프로바이더 이외가 작성한 셀렉터에 채널을 등록하려고 했을 때에 throw 되는 체크되지 않는 예외입니다.
NoConnectionPendingException SocketChannelconnect 메소드의 호출이 아직 완료하고 있지 않는데, finishConnect 메소드가 불려 갔을 경우에 throw 되는 체크되지 않는 예외입니다.
NonReadableChannelException 처음은 읽을 위해(때문에) 오픈되어 있지 않았던 채널로부터 read를 실시하려고 했을 때에 throw 되는 체크되지 않는 예외입니다.
NonWritableChannelException 처음은 기입을 위해서(때문에) 오픈되어 있지 않았던 채널에 대해서 기입을 실시하려고 했을 때에 throw 되는 체크되지 않는 예외입니다.
NotYetBoundException 미바인드의 서버 소켓 채널상에서 입출력 조작을 호출하려고 했을 때에 throw 되는 체크되지 않는 예외입니다.
NotYetConnectedException 미접속의 소켓 채널상에서 입출력 조작을 호출하려고 했을 때에 throw 되는 체크되지 않는 예외입니다.
OverlappingFileLockException 락을 획득하려고 한 파일 영역이, 벌써 같은 Java 가상 머신에 의해 락 되고 있는 영역에 오버랩 하고 있는 경우, 또는 그 외의 thread가 같은 파일의 오버랩 하고 있는 영역을 잠그려고 대기하고 있는 경우에 throw 되는 체크되지 않는 예외입니다.
UnresolvedAddressException 미해결의 소켓 주소에 대해서 네트워크 조작을 호출하려고 했을 때에 throw 되는 체크되지 않는 예외입니다.
UnsupportedAddressTypeException 지원되어 있지 않은 형태의 소켓 주소에 바인드 또는 접속하려고 했을 때에 throw 되는 체크되지 않는 예외입니다.
 

패키지 java.nio.channels 의 설명

입출력 조작을 실행할 수 있는 엔티티 (파일, 소켓등)에의 접속을 나타내는 채널이나, 다중화 된 비블록 입출력 조작용의 셀렉터를 정의합니다.

채널

설명

Channel 입출력 조작을 하는 장소
  ReadableByteChannel 버퍼에의 read를 실시한다
    ScatteringByteChannel    버퍼 순서에의 read를 실시한다
  WritableByteChannel 버퍼로부터의 서두를 실시한다
    GatheringByteChannel 버퍼 순서로부터의 서두를 실시한다
  ByteChannel 버퍼에의 읽어들여, 버퍼로부터의 서두를 실시한다
Channels 채널과 스트림의 상호 운용을 위한 유틸리티 메소드

「채널」은, 하드웨어 디바이스, 파일, 네트워크 소켓외, 개별의 입출력 조작 (읽어내, 기입등)을 실행할 수 있는 프로그램 컴퍼넌트등의 엔티티에의 오픈 접속을 나타냅니다. Channel 인터페이스로 지정되고 있는 대로, 채널 상태는 오픈화 클로즈의 어느 쪽인지입니다. 어느 쪽 상태의 채널도, 「비동기 클로즈」한편 「인터럽트 가능」입니다.

Channel 인터페이스는, 각각이 새로운 입출력 조작을 지정하는 복수외의 인터페이스에 의해 확장됩니다.

ReadableByteChannel 인터페이스는, 채널로부터 버퍼에 바이트를 읽어들이는 read 메소드를 지정합니다. 같이WritableByteChannel 인터페이스는, 버퍼로부터 채널에 바이트를 써내는 write 메소드를 지정합니다. ByteChannel 인터페이스는, 이것들 2 개의 인터페이스를 통일한 인터페이스이며, 바이트의 read와 서두의 양쪽 모두를 실행할 수 있는 일반적인 채널로 사용됩니다.

싱글 버퍼는 아니고 복수의 버퍼의 순서를 사용하는 read 메소드와 write 메소드를 추가하는 것으로써, ScatteringByteChannel 인터페이스는 ReadableByteChannel 인터페이스,GatheringByteChannel 인터페이스는 WritableByteChannel 인터페이스를 확장합니다.

Channels 유틸리티 클래스는,java.io 패키지의 스트림 클래스와 이 패키지의 채널 클래스의 제휴를 지원하는 static 메소드를 정의합니다. 적절한 채널은,InputStreamOutputStream 로부터 구축할 수 있습니다. 반대로,InputStreamOutputStream 는, 단일의 채널로부터 구축할 수 있습니다. Reader 는, 지정된 캐릭터 세트를 사용해 지정된 read 가능한 바이트 채널의 바이트를 디코드하도록(듯이) 구축할 수 있습니다. 반대로,Writer 는, 지정된 캐릭터 세트를 사용해 문자를 바이트에 encode 해, 지정된 기입 가능한 바이트 채널에 기입하도록(듯이) 구축할 수 있습니다.

파일 채널

설명

FileChannel 파일의 읽어들여, 기입해, 매핑, 조작
FileLock 파일의 (영역의) 락
MappedByteBuffer    파일 영역에 매핑 되는 다이렉트 byte 버퍼

FileChannel 클래스는, 현재의 파일 위치의 조회 및 변경, 파일의 말미의 절약해에 의한 특정의 사이즈에의 변경외, 파일에 접속된 채널로부터의 바이트의 읽어들여, 파일에 접속된 채널에의 바이트의 기입이라고 한 일반적인 조작을 지원합니다. 이 클래스는, 파일 전체 또는 파일내의 특정의 영역의 락을 획득하는 메소드를 정의합니다. 이러한 메소드는,FileLock 클래스의 인스턴스를 돌려줍니다. FileChannel 클래스는, 파일의 갱신 내용을, 이 파일이 포함되고 있는 기억장치에 강제적으로 기입하는 메소드도 정의합니다. 이러한 메소드에 의해, 파일과 그 외의 채널간의 바이트의 교환이 효율화됩니다. 또, 파일 영역을 직접 메모리에 매핑 할 수 있게 됩니다. 이 마지막 조작으로 작성되는 MappedByteBuffer 클래스의 인스턴스는, 파일 관련 조작에 의해 ByteBuffer 클래스를 확장합니다.

java.io 패키지의 FileInputStream 클래스,FileOutputStream 클래스,RandomAccessFile 클래스에는,getChannel 메소드가 추가되고 있습니다. 이 3 개(살)의 쳐 몇개의 클래스의 인스턴스상에서 getChannel 메소드를 호출하면(자), 기본이 되는 파일에 접속된 파일 채널이 돌려주어집니다.

다중화 된 비블록 입출력

설명

SelectableChannel 다중화 가능한 채널
  DatagramChannel java.net.DatagramSocket 의 채널
  Pipe.SinkChannel 파이프의 기입측
  Pipe.SourceChannel 파이프의 read측
  ServerSocketChannel    java.net.ServerSocket 의 채널
  SocketChannel java.net.Socket 의 채널
Selector 선택 가능 채널의 멀티플렉서
SelectionKey 셀렉터에의 채널의 등록을 나타낸다
토큰
Pipe 단방향 파이프를 형성하는 2 개의 채널

셀렉터, 선택 가능 채널, 선택 키에 의해 제공되는 다중화 된 비블록 입출력은, thread 지향의 블록 입출력보다 스케이라불입니다.

셀렉터선택 가능 채널의 멀티플렉서입니다. 선택 가능 채널은,비블록 모드로 분류되는 특수한 채널이기도 합니다. 다중화 입출력 조작을 실행하고 싶은 경우는, 우선 선택 가능 채널을 1 개 이상 작성합니다. 다음에, 이것을 비블록 모드로 해, 셀렉터에등록 합니다. 채널을 등록하면(자), 일련의 입출력 조작이 지정됩니다. 셀렉터는, 준비의 일환으로서 이러한 조작을 테스트해, 등록을 나타내는선택 키를 돌려줍니다.

셀렉터에 채널을 등록하면(자), 범위가 미리 선언되고 있는 1 개 이상의 조작의 실행이 가능하게 된 채널을 검출하기 위해(때문에),선택 조작을 실행합니다. 채널의 준비가 되어 있으면, 등록시에 반환된 키가 셀렉터의 「선택 키 세트」에 추가됩니다. 이 키 세트와 이 세트에 포함되는 키를 조사하는 것으로, 각 채널을 실행할 수 있는 조작을 판단할 수 있습니다. 요구된 입출력 조작을 실행하기 위해(때문에), 각 키로부터 대응하는 채널을 취득할 수 있습니다.

선택 키는, 그 채널이 있는 조작을 실행할 수 있는 상태가 되어 있는 것을 나타냅니다. 다만, 이것은 단순한 힌트이며, thread가 블록 되는 일 없이 있는 조작을 실행할 수 있는 것을 보증하는 것은 아닙니다. 힌트의 내용이 분명하게 부정한 경우는, 이것을 무시하기 위해서, 다중화 입출력 처리를 실행하는 코드를 기입할 필요가 있습니다.

이 패키지는,java.net 패키지에 정의되고 있는 DatagramSocket 클래스,ServerSocket 클래스,Socket 클래스에 대응하는 선택 가능 채널 클래스를 정의합니다. 이러한 클래스에는, 채널에 관련한 소켓을 지원할 수 있도록(듯이), 소규모의 변경이 더해지고 있습니다. 이 패키지는, 단방향 파이프를 구현하는 단순한 클래스도 정의합니다. 새로운 선택 가능 채널은 항상, 대응하는 클래스의 정적인 open 메소드를 호출하는 것에 의해 작성됩니다. 채널이 관련 소켓을 필요로 하고 있는 경우는, 이 조작의 부작용으로서 소켓이 작성됩니다.

셀렉터, 선택 가능 채널, 선택 키의 구현을 옮겨놓고 싶은 경우는,java.nio.channels.spi 패키지에 정의되고 있는 SelectorProvider 클래스의 대체 정의 또는 인스턴스를 플러그 인 합니다. 다만, 이 기능은, 모든 개발자를 대상으로 한 기능이 아닙니다. 이것은, 매우 높은 성능이 요구되는 경우에, operating system 고유의 입출력 다중화 메카니즘을 활용할 수 있도록(듯이) 하는, 상급 사용자용 기능입니다.

다중화 입출력의 추상화 객체를 구현하기 위해서 필요하게 되는 등록 및 동기 처리는, 대부분의 경우,java.nio.channels.spi 패키지 AbstractInterruptibleChannel 클래스,AbstractSelectableChannel 클래스,AbstractSelectionKey 클래스,AbstractSelector 클래스에 의해 실행됩니다. 커스텀 셀렉터 프로바이더를 정의할 때, 직접 서브 클래스화 되는 것은 AbstractSelector 클래스와 AbstractSelectionKey 클래스 뿐입니다. 커스텀 채널 클래스는, 이 패키지에 정의되고 있는 적절한 SelectableChannel 서브 클래스를 확장할 필요가 있습니다.

별도 지정된 사항이 없는 경우,null 인수를 생성자 , 또는 이 패키지의 임의의 클래스 또는 인터페이스의 메소드에 건네주면(자) NullPointerException 가 throw 됩니다.

도입된 버젼:
1.4

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.