메타 데이터 관리(파일과 파일 저장소 속성)


데이터에 대한 파일, 디렉토리, 링크, 만든 날짜, 마지막 수정한 날짜, 파일의 소유자, 그룹 소유자, 접근 권한 등의 메타 데이터에 대한 정보를 제공한다. 


Files Class 에 포함된 하나의 파일에서 제공되는 속성 정보


Method 

Comment 

size(Path) 

파일의 크기를 bytes 로 돌려준다. 

isDirectory(Path, LinkOption)

파일이 디렉토리의 경우 true를 돌려준다. 

isRegularFile(Path, LinkOption...) 

정규 파일일 경우 true를 돌려 준다. 

isSybloicLink(Path)

심볼릭 링크 파일일 경우 true를 돌려준다. 

isHidden(Path) 

숨겨진 파일일 경우 true를 돌려준다. 

getLastModifiedTime(Path, LinkOption...)

setLastModifiedTime(Path, LinkOption...) 

마지막 수정 시간을 변경하거나, 돌려준다. 

getOwner(Path, LinkOption...)

setOwner(Path, LinkOption...) 

작성자를 변경하거나, 돌려준다.

getPosixFilePermissions(Path, LinkOption...)

setPosixFilePermissions(Path, Set<PosixFilePermission>)

POSIX 파일 권한을 변경하거나, 돌려준다. 

getAttribute(Path, String, LinkOptions...)

setAttribute(Path, String, Object, LinkOption...)

속성 값을 변경하거나, 돌려준다.


 * 단일 속성을 가져올 경우 보통 [view-name:]atribute-name 형식을 사용한다.




여러 속성을 받아 오는 방법


Method 

Comment 

readAttributes(Path, String, LinkOption...) 

String 에 속하는 속성을 읽어서  Map<String, Object> 형식으로 돌려준다.

readAttributes(Path, Class<A>, LinkOption...) 

 Class<A> 형식으로 속성을 읽어서 돌려준다.



NIO.2 에서는 Class<A> 로 6가지 View를 지원한다.


1. BasicFileAttributeView

  기본적인 속성과 필수 요소를 제공한다.

2. DosFileAttributeView

  기본 뷰를 확장한 DOS 속성의 네가지 표준 속성을 지원한다.

3. PosixFileAttributeView

  기본 뷰를 확장한 POSIX표준을 지원 하는 파일 시스템의 속성을 지원한다.

  이 속성은 소유자, 소유그룹과 아홉가지 접속 권한에 대하여 포함한다.

4. FileOwnerAttributeview

  파일의 소유자에 대한 개념을 구현하여 모든 파일 시스템에 대해 지원 한다.

5. AclFileAttributeView

   파일 접근 리스트에 대한 읽기와 수정을 지원한다.

   Windows의 ACL 모델로, NFSv4 모델 역시 지원한다.

6. UserDefinedFileAttributeView

  사용자 정의 메타데이터를 지원한다.


기본 BasicFileAttributeView는 모든 OS에서 지원 한며 OS 별로 지원 하는 View 가 다르다.

지원하는 View를 확인 하기 위해서는 아래와 같이 확인을 하면 된다.


FileSystem fs = FileSystem.getDefault();
Set<String> views = fs.supportedFileAttributeViews();

for (String view : views){
  System.out.println(view);
}

예를 들어 Win7의 경우 아래와 같은 결과를 나타 낸다.


acl

basic

owner

user

dos




참조 : http://docs.oracle.com/javase/tutorial/essential/io/fileAttr.html

'JAVA > NIO2' 카테고리의 다른 글

[NIO.2]DOS File Attributes  (0) 2013.12.16
[NIO.2]Basic File Attributes  (0) 2013.12.10
[NIO.2]Managing Metadata (File and File Store Attributes)  (0) 2013.11.25
[NIO.2]Moving a File or Directory  (0) 2013.11.25
[NIO.2]Copying a File or Directory  (0) 2013.11.25
[NIO.2]Deleting a File or Directory  (0) 2013.11.25
Posted by lahuman

파일 또는 디렉토리 이동

파일 또는 디렉토리 이동 시 move(Path, Path, CopyOption...) Method를 이용한다.

타겟이 존재할 경우 Exception이 발생하는데, REPLACE_EXISTING 옵션을 사용하면 막을 수 있다.


빈 디렉토리가 이동 될 수 있다.


옵션 정보

  • REPLACE_EXISTING - 대상이 존재 할 경우에도 이동을 수행 한다.대상이 링크일 경우 가르키는 것이 대체 되지만 링크는 영향을 받지 않는다
  • ATOMIC_MOVE - 원자 파일 작업으로 이동을 수행 한다. 파일 시스템이 원자이동을 지원하지 않는 경우 예외가 발생한다. ATOMIC_MOVE 로 디렉토리에 파일을 이동할수 있으며, 디렉토리를 어떤 프로세스가 액세스 하는지 보장 된다.
import static java.nio.file.StandardCopyOption.*;
...
Files.move(source, target, REPLACE_EXISTING);


참조 : http://docs.oracle.com/javase/tutorial/essential/io/move.html

Posted by lahuman

파일 또는 디렉토리 복사

파일이나 디렉토리 복사는 copy(Path, Path, CopyOption...) Method를 사용한다.

타겟 파일이 존재 할 경우 에러가 발생하는데 원치 않을 경우 REPLACE_EXISTING 옵션을 사용하면된다.


디렉토리와 복사가 가능하다.

심볼릭 링크의 경우 대상이 복사 된다.


다음은 옵션 정보 이다.

  • REPLACE_EXISTING - 이미 존재 할 경우에도 복사를 진행한다. 다만, 비어 있지 않은 디렉토리일 경우 FileAlreadExistException 이 발생한다.
  • COPY_ATTRIBUTES - 파일에 대한 속성 값도 함께 복사 한다. 파일 속성은 시스템과 플랫폼에 의존한다.
  • NOFOLLOW_LINKS - 원본이 심볼릭링크의 경우 링크 복사를 한다.(링크 대상이 아닌)
import static java.nio.file.StandardCopyOption.*;
...
Files.copy(source, target, REPLACE_EXISTING);


또한 복사 기능은 stream 과 file 에서 사용이 가능하다.

  • copy(InputStream, Path, CopyOptions...)
  • copy(Path, OutputStream)


참조 : http://docs.oracle.com/javase/tutorial/essential/io/copy.html

'JAVA > NIO2' 카테고리의 다른 글

[NIO.2]Managing Metadata (File and File Store Attributes)  (0) 2013.11.25
[NIO.2]Moving a File or Directory  (0) 2013.11.25
[NIO.2]Copying a File or Directory  (0) 2013.11.25
[NIO.2]Deleting a File or Directory  (0) 2013.11.25
[NIO.2]Checking a File or Directory  (0) 2013.11.25
[NIO.2]Files Class  (0) 2013.11.20
Posted by lahuman