본문 바로가기

프로그래밍(TA, AA)/JVM 언어

[파일I/O] 자바 Path 및 메타데이터 파일 속성

NIO.2 Path 클래스


NIO.2 API(JSR 203: More New I/O APIs for the Java Platform)를 시작하기에는 새 추상 클래스 java.nio.file.Path 가 좋습니다. I/O 작업과 관련된 모든 애플리케이션은 Path 클래스의 강력한 기능을 이용합니다. 모든 I/O 작업이 Path 리소스에 기반하므로 Path 클래스는 NIO.2에서 가장 널리 사용하는 클래스입니다.

Path 클래스 사용 용도는 1) 문법적인 용도로 파일시스템에 접근하지 않고 경로를 조작하는 작업에 주로 사용됩니다. 이는 메모리상에서 행해지는 논리적 조작입니다. 2) 경로를 참조하는 파일에 대한 작업에서 쓰이게 됩니다.



NIO.2 API 메타데이터 파일 속성


파일이나 디렉토리가 숨김(Hidden)인지, 디렉터리인지, 크기가 어떻게 되는지, 소유자는 누구인지 등이 궁금하다면 이에 대한 해답 메타데이터(metadata)에서 얻을 수 있습니다. 메타데이터는 데이터에 관한 데이터라는 뜻입니다.


NIO2 라이브러리에서는 메타데이터의 개념과 속성을 연결지어 생각하며, java.nio.file, attribute 패키지를 통해 이들 속성에 접근할 수 있습니다. 다른 파일시스템은 개념이 달라서 추적해야 하는 속성도 달라지므로 NIO2는 속성을 뷰로 묶어서 처리하며, 각 뷰는 특정 파일시스템 구현체와 매핑되어 있습니다. 일반적으로 뷰는 공통 메서드 readAttributes()를 통해 속성을 통째로 제공합니다. 또한, getAttribute()와 setAttribute() 메서드로 개별 속성을 가져오거나 설정할 수 있으며, 이들 메서드는 java.nio.file.Files 클래스에서 이용할 수 있습니다. 뷰에 따라 부수적인 작업에 이용하는 다른 메서드도 존재합니다.


NIO2에서 제공하는 뷰를 통해 파일이 읽기전용인지, 숨김파일인지, 파일의 마지막 접근일, 마지막 수정일, 소유자, 소유권 이전 등이 가능합니다. 또한 파일의 접근 제어 목록(ACL, Access Control List)를 보는 방법과 파일에 유닉스식 권한을 부여, 파일 저장소 속성 및 고유의 속성 정의도 가능합니다.



NIO2에서 지원하는 뷰 6가지 입니다.


BasicFileAttributeView: 모든 파일시스템 구현물에서 지원해야 하는 기본 속성에 대한 뷰를 제공합니다. 속성 뷰의 이름은 basic입니다.

DosFileAttributeView: 도스(DOS) 속성을 지원하는 파일시스템에서 지원하는 네 가지 표준 속성에 대한 뷰를 제송합니다. 이 속성 뷰의 이름은 dos입니다.

PosixFileAttibuteView: basic 속성 뷰를 확장한 뷰로 유닉스같은 POSIX 표준을 지원하는 파일시스템의 속성을 보여줍니다. 이 속성 뷰의 이름은 posix입니다.

FileOwnerAttributeView: 파일 소유자 개념을 지원하는 파일 시스템 구현물에서 지원하는 뷰입니다. 속성 뷰의 이름은 owner입니다.

AclFileAttributeView: 파일의 ACL 읽기나 업데이트를 지원하는 뷰입니다. NFSv4 ACL 모델을 지원합니다. 이 속성 뷰의 이름은 acl입니다.

UserDefinedFileAttributeView: 사용자가 정의한 메타데이터를 지원한는 뷰입니다.