UserDefinedFileAttributeView — 파일의 사용자 정의 속성(확장 속성)의 뷰

UserDefinedFileAttributeView — 파일의 사용자 정의 속성(확장 속성)의 뷰

UserDefinedFileAttributeView는 파일의 사용자 정의 속성(user-defined attributes), 때로는 확장 속성(extended attributes)으로 알려진 것의 뷰를 제공하는 파일 속성 뷰예요.

출처: Java API Reference

본문

public interface UserDefinedFileAttributeView extends FileAttributeView

파일의 사용자 정의 속성, 때로는 확장 속성으로 알려진 것의 뷰를 제공하는 파일 속성 뷰예요. 사용자 정의 파일 속성은 파일 시스템에 의미가 없고 파일과 함께 저장되는 메타데이터를 저장하는 데 사용돼요. 주로 그러한 능력을 직접 지원하는 파일 시스템 구현을 위한 것이지만 에뮬레이션될 수도 있어요.

FileAttributeView는 파일의 사용자 정의 속성을 이름/값 쌍의 집합으로 제공하며, 속성 이름은 String으로 표현돼요. 구현은 속성에 접근할 때 플랫폼 또는 파일 시스템 표현에서 인코딩/디코딩을 요구할 수 있어요. 값은 불투명한 내용을 가져요. 이 뷰는 readwrite 메서드를 정의해 ByteBuffer로 값을 읽거나 써요. 이 뷰는 속성 값의 크기가 Integer.MAX_VALUE보다 큰 경우에는 사용하도록 설계되지 않았어요.

사용자 정의 속성은 일부 구현에서 보안 관련 속성을 저장하는 데 사용될 수 있으므로, 최소한 기본 프로바이더의 경우 사용자 정의 속성에 접근하는 모든 메서드는 보안 관리자가 설치되면 RuntimePermission("accessUserDefinedAttributes") 권한을 요구해요. Java 1.7부터 사용할 수 있어요.

메서드 요약

수식자와 타입 메서드 설명
void delete(String name) 사용자 정의 속성을 삭제해요.
List<String> list() 사용자 정의 속성의 이름을 담은 목록을 반환해요.
String name() 이 속성 뷰의 이름을 반환해요.
int read(String name, ByteBuffer dst) 사용자 정의 속성의 값을 버퍼로 읽어요.
int size(String name) 사용자 정의 속성 값의 크기를 반환해요.
int write(String name, ByteBuffer src) 버퍼에서 사용자 정의 속성의 값을 써요.

name

String name() — 이 유형의 속성 뷰는 "user"라는 이름을 가져요.

list

List<String> list() throws IOException — 파일의 사용자 정의 속성 이름을 담은 수정 불가능한 목록을 반환해요.

size

int size(String name) throws IOException — 사용자 정의 속성 값의 크기를 바이트 단위로 반환해요. 속성 크기가 Integer.MAX_VALUE보다 크면 ArithmeticException이 발생해요.

read

int read(String name, ByteBuffer dst) throws IOException

사용자 정의 속성의 값을 버퍼로 읽어요. 값을 완전히 읽기에 버퍼에 남아 있는 바이트 수가 부족하면 실패해요. 버퍼가 읽기 전용이면 IllegalArgumentException이 발생해요.

사용 예 — MIME 타입 읽기:

UserDefinedFileAttributeView view =
    Files.getFileAttributeView(path, UserDefinedFileAttributeView.class);
String name = "user.mimetype";
ByteBuffer buf = ByteBuffer.allocate(view.size(name));
view.read(name, buf);
buf.flip();
String value = Charset.defaultCharset().decode(buf).toString();

write

int write(String name, ByteBuffer src) throws IOException

버퍼에서 사용자 정의 속성의 값을 써요. 주어진 이름의 속성이 이미 있으면 그 값을 대체하고, 없으면 새로 만들어요. 공간이 부족하거나 속성 이름/값이 구현별 최대 크기를 초과하면 IOException이 발생해요.

사용 예 — MIME 타입 쓰기:

UserDefinedFileAttributeView view =
    Files.getFileAttributeView(path, UserDefinedFileAttributeView.class);
view.write("user.mimetype", Charset.defaultCharset().encode("text/html"));

delete

void delete(String name) throws IOException — 사용자 정의 속성을 삭제해요. 속성이 존재하지 않으면 IOException이 발생해요.

더 알아보기 (Learn more)

Java 공식 API