자바에는 I/O 관련 패키지로 java.io, java.nio가 존재합니다. NIO중 자바 7에서 새롭게 소개한 파일 I/O는 NIO2.0으로 불릴정도로 변화의 폭이 큽니다. 이러한 새로운 파일I/O를 제공하는 이유는 다음과 같습니다.

  • 다양한 파일 처리 방법을 제공하고 표준화된 절차를 제시하기 위해
  • 대량의 파일을 처리하기 위해

개념 이해하기

NIO관련 패키지

패키지설명
java.nioNIO의 기본, 핵심 클래스와 인터페이스에 대한 패키지, 네트워크, 파일 등의 자원으로부터 데이터를 처리하기 위한 기본 기능을 제공
java.nio.channers파일, 소켓과 같은 I/O 작업을 수행하기 위한 연결정보가 있는 채널을 정의, 특별히 논블로킹 I/O와 멀티 처리 등을 사용하기 위한 기능을 제공
java.nio.channles.spijava.nio.channels 패키지를 위한 서비스 제공자 클래스
java.nio.charset테스트2
java.nio.charset.apijava.nio.charset 패키지를 위한 서비스 제공자 클래스
java.nio.file테스트2
java.nio.file.attribute테스트2
java.nio.file.spijava.nio.file 패키지를 위한 서비스 제공자 클래스
  • 위 표와 같이 NIO는 8개의 패키지를 가짐
  • 이중 핵심은 java.nio, java 1.4에 추가됨
  • 여기서는 java.nio.file 중점으로 살펴봄
    • java7에 추가됨
    • java8에서 스트림이 접목되면서 그 기능이나 성능이 대폭 확장됨

파일 NIO와 기본 I/O의 차이

  • 심볼릭 링크 지원
  • 상호 운영성
  • 가시성
  • 파일 동기화 기능
  • 예외 처리 명확화

경로 이해하기

Path를 이용한 경로 관리

파일 관리

파일 생성, 쓰기, 읽기

랜덤 액세스 파일

디렉터리 처리

파일 트리

디렉터리 변경 감지

References