JAVA/NIO2

[NIO.2]Files Class

lahuman 2013. 11. 20. 17:50
728x90

Files Class는 java.nio.file package에서 가장 중요한 Class 이다.

이 Class는 파일과 디렉토리에 대한 읽고, 쓰고, 조정에 대한 static Method들을 제공한다.


Files Method는 Path Object와 함께 사용 됩니다.

다음 주요 내용을 확인 해 보자.


1. 시스템 자원 해제 및 예외상황 처리

2. 인자들에 대한 정보

3. 원자적인 활동

4. 메소드 연결

5. Glob 

6. Link 인식



1. 시스템 자원 해제 및 예외 상황 처리

java.io.Colseable Interface를 상속 받거나, 구현하여 자원에 대한 해제를 아래와 같이 처리 한다.

Charset charset = Charset.forName("US-ASCII");
String s = ...;
try (BufferedWriter writer = Files.newBufferedWriter(file, charset)) {
    writer.write(s, 0, s.length());
} catch (IOException x) {
    System.err.format("IOException: %s%n", x);
}


2. 인자들에 대한 정보

몇몇 Files Method는 인자의 갯수가 동적이다. 예를 들면, 

Path Files.move(Path, Path, CopyOption...)

과 같이 CopyOption을 배열로 처리 한다.

사용 법은 다음과 같다

import static java.nio.file.StandardCopyOption.*;

Path source = ...;
Path target = ...;
Files.move(source,
           target,
           REPLACE_EXISTING,
           ATOMIC_MOVE);


3. 원자적인 활동

여러 파일이 이동, 삭제 등의 원자적 특정 작업을 수행 할 수 있습니다.

단 시스템에 문제를 주거나 다른 프로세스와 관계가 없는 원자적인 파일에 대해서만 가능 합니다.


4. 메소드 체인

다음과 같은 메소드 체인 방식을 제공 합니다.

String value = Charset.defaultCharset().decode(buf).toString();
UserPrincipal group =
    file.getFileSystem().getUserPrincipalLookupService().
         lookupPrincipalByName("me");


5. Glob

구문(파일명, 디렉토리명)에 대한 패턴 동작 

Glob 구문은 몇가지 간단한 룰을 따른다.

  • * : 모든 숫자나 문자
  • ** : *와 같은 동작은 한다. 그러나, 디렉토리의 경계를 교차한다. 이 구문은 일잔적으로 완전한 경로와 일치 하는데 사용된다.
  • ? : 한개의 글자와 일치 한다.
  • {...} : 리스트와 일치 하는 것을 찾는다.
    예) {sun, moon, stars} : "sun", "moon", "stars" 
         {temp*, temp*} : "tempadsf", "tmpddd"
  • [A-Z] : 문자의 범위를 지정한다. *,?,\ 을 함께 사용 가능
    예) [aeiou] : 모든 소문자 모음
         [0-9] : 모든 숫자
         [A-Z] 모든 대문자
         [a-z,A-Z] 모든 영문자
  • 마지막으로 *,? 등의 특별한 문자의 패턴을 이용 하려면 \를 이용하면된다.
    예) \\ : \(문자)
         \? : ?(문자)

 6. LINK 인식

Files class는 Link 를 인식한다. 모든 Files method는 심볼릭 link나, 그 심볼 링크를 발견 할때 동작을 구성 할 수 있도록 옵션 제공을 한다.


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


728x90