Java NIO의 채널은 스트림과 유사하지만 몇 가지 차이점이 있습니다.
채널에서 데이터를 읽고 채널에 데이터를 쓸 수 있습니다. 그러나 읽기 및 쓰기 스트림은 일반적으로 단방향입니다.
채널은 비동기적으로 읽고 쓸 수 있습니다.
채널의 데이터는 항상 버퍼에서 먼저 읽혀지거나 항상 버퍼에서 쓰여져야 합니다.
위에서 언급한 것처럼 채널에서 버퍼로 데이터를 읽고 버퍼에서 채널로 데이터를 씁니다. 아래 그림과 같이:
다음은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!