Publié le

자바 nio 예제

Java NIO는 스트림 지향 모델 이외의 버퍼 지향 모델을 사용합니다. 따라서 소켓 통신은 일반적으로 버퍼에 쓰고 읽음으로써 이루어집니다. Java 응용 프로그램 성능은 NIO 또는 NIO.2에 관심이 있는 개발자에게 공통적인 무승부입니다. 그러나 제 경험에 따르면 NIO.2의 파일 변경 통보는 새로운 입력/출력 API의 가장 강력한 기능입니다. NIO에서 채널은 읽거나 쓰는 모든 개체일 수 있습니다. 그 임무는 파일과 소켓을 추상화하는 것입니다. NIO 채널은 일관된 메서드 수집을 지원하므로 stdout, 네트워크 연결 또는 다른 채널이 실제로 사용 중인지 여부에 따라 특별한 경우 없이 프로그래밍할 수 있습니다. 채널은 Java의 기본 I/O 스트림 스트림의 이러한 특성을 공유하여 차단 I/O를 제공합니다. 채널은 비동기 I/O를 지원합니다. 채널에서 읽고 채널에 쓰는 방법을 살펴보겠습니다. 이 예제에서는 FileChannel을 사용합니다.

이 문서는 자바 NIO (새로운 IO)에 대한 초보자 튜토리얼입니다. Java IO에 대한 대안을 제공하는 이 API를 한 단계 높이 살펴볼 것입니다. 자바 NIO API는 여기에서 볼 수 있습니다. 예제 코드는 이 항목의 핵심 추상화를 사용하는 것을 보여 줍니다. NIO에는 많은 좋은 참조가 있습니다 . NIO 및 NIO.2로 시작하는 경우 Java 2 SDK 표준 판(SE) 설명서와 Java SE 7 설명서가 필수적입니다. 이 문서의 예제를 실행하려면 JDK 7 이상으로 작업해야 합니다. NIO는 종종 성능 이점으로 승진하지만 반응이 높다고 말하는 것이 더 정확합니다.

어떤 경우에는 NIO가 실제로 기본 Java I/O보다 더 나쁜 성능을 발휘합니다. 예를 들어, 작은 파일의 간단한 순차읽기 및 쓰기의 경우 간단한 스트림 구현이 해당 이벤트 지향 채널 기반 코딩보다 2~3배 빠를 수 있습니다. 또한 다중화되지 않은 채널( 즉, 별도의 스레드의 채널)은 단일 스레드에서 선택자를 등록하는 채널보다 훨씬 느릴 수 있습니다. NIO의 비차단 I/O는 목록 1의 파일 시스템 수신기에서 보여 준 것처럼 이벤트 기반입니다.