파일 I/O(NIO 2.0)
자바에는 I/O 관련 패키지로 java.io, java.nio가 존재합니다. NIO중 자바 7에서 새롭게 소개한 파일 I/O는 NIO2.0으로 불릴정도로 변화의 폭이 큽니다. 이러한 새로운 파일I/O를 제공하는 이유는 다음과 같습니다.
- 다양한 파일 처리 방법을 제공하고 표준화된 절차를 제시하기 위해
- 대량의 파일을 처리하기 위해
개념 이해하기
NIO관련 패키지
패키지 | 설명 |
---|---|
java.nio | NIO의 기본, 핵심 클래스와 인터페이스에 대한 패키지, 네트워크, 파일 등의 자원으로부터 데이터를 처리하기 위한 기본 기능을 제공 |
java.nio.channers | 파일, 소켓과 같은 I/O 작업을 수행하기 위한 연결정보가 있는 채널을 정의, 특별히 논블로킹 I/O와 멀티 처리 등을 사용하기 위한 기능을 제공 |
java.nio.channles.spi | java.nio.channels 패키지를 위한 서비스 제공자 클래스 |
java.nio.charset | 테스트2 |
java.nio.charset.api | java.nio.charset 패키지를 위한 서비스 제공자 클래스 |
java.nio.file | 테스트2 |
java.nio.file.attribute | 테스트2 |
java.nio.file.spi | java.nio.file 패키지를 위한 서비스 제공자 클래스 |
- 위 표와 같이 NIO는 8개의 패키지를 가짐
- 이중 핵심은 java.nio, java 1.4에 추가됨
- 여기서는 java.nio.file 중점으로 살펴봄
- java7에 추가됨
- java8에서 스트림이 접목되면서 그 기능이나 성능이 대폭 확장됨
파일 NIO와 기본 I/O의 차이
- 심볼릭 링크 지원
- 상호 운영성
- 가시성
- 파일 동기화 기능
- 예외 처리 명확화