파일 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의 차이

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

경로 이해하기

Path를 이용한 경로 관리

파일 관리

파일 생성, 쓰기, 읽기

랜덤 액세스 파일

디렉터리 처리

파일 트리

디렉터리 변경 감지

References