-
[NIO.2]Files ClassJAVA/NIO2 2013. 11. 20. 17:50728x90
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'JAVA > NIO2' 카테고리의 다른 글
[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]The Path Class (0) 2013.11.13 [JAVA.7]NIO2 노트 시작 합니다. (0) 2013.11.12