>  기사  >  Java  >  Java NIO 시리즈 튜토리얼 2: Java NIO 채널은 스트림과 유사합니다

Java NIO 시리즈 튜토리얼 2: Java NIO 채널은 스트림과 유사합니다

php是最好的语言
php是最好的语言원래의
2018-07-30 10:39:531728검색

Java NIO의 채널은 스트림과 유사하지만 몇 가지 차이점이 있습니다.

  • 채널에서 데이터를 읽고 채널에 데이터를 쓸 수 있습니다. 그러나 읽기 및 쓰기 스트림은 일반적으로 단방향입니다.

  • 채널은 비동기적으로 읽고 쓸 수 있습니다.

  • 채널의 데이터는 항상 버퍼에서 먼저 읽혀지거나 항상 버퍼에서 쓰여져야 합니다.

위에서 언급한 것처럼 채널에서 버퍼로 데이터를 읽고 버퍼에서 채널로 데이터를 씁니다. 아래 그림과 같이:

Channel 구현

다음은 Java NIO에서 가장 중요한 채널의 구현입니다.

  • FileChannel

  • DatagramChannel

  • SocketChannel

  • ServerSocketChannel

FileChannel은 파일에서 데이터를 읽고 씁니다.

DatagramChannel은 UDP를 통해 네트워크의 데이터를 읽고 쓸 수 있습니다.

SocketChannel은 TCP를 통해 네트워크의 데이터를 읽고 쓸 수 있습니다.

ServerSocketChannel은 웹 서버처럼 새로 들어오는 TCP 연결을 모니터링할 수 있습니다. 각각의 새로운 수신 연결에 대해 SocketChannel이 생성됩니다.

기본 채널 예제

다음은 FileChannel을 사용하여 버퍼로 데이터를 읽는 예제입니다.

RandomAccessFile aFile = new RandomAccessFile("data/nio-data.txt", "rw");
FileChannel inChannel = aFile.getChannel();

ByteBuffer buf = ByteBuffer.allocate(48);

int bytesRead = inChannel.read(buf);
while (bytesRead != -1) {

System.out.println("Read " + bytesRead);
buf.flip();

while(buf.hasRemaining()){
System.out.print((char) buf.get());
}

buf.clear();
bytesRead = inChannel.read(buf);
}
aFile.close();

buf.flip() 호출에 주의하세요. 먼저 데이터를 버퍼로 읽은 다음 버퍼를 반전시킵니다. 그런 다음 버퍼 읽기 데이터에서. 다음 섹션에서는 Buffer에 대해 더 자세히 설명하겠습니다.

관련 기사:

Java NIO 튜토리얼 시리즈 1: Java NIO에 대한 간략한 소개

Java NIO 튜토리얼 시리즈 3: Buffer의 기본 사용법

관련 동영상:

JDK 다운로드 프로세스 일러스트레이션 - JAVA 초등 입문 영상 튜토리얼

위 내용은 Java NIO 시리즈 튜토리얼 2: Java NIO 채널은 스트림과 유사합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.