FileSystemProvider — 파일 시스템 서비스 프로바이더

FileSystemProvider — 파일 시스템 서비스 프로바이더

파일 시스템을 위한 서비스 프로바이더 클래스예요. Files 클래스가 정의하는 메서드들은 일반적으로 이 클래스의 인스턴스에 위임해요. 파일 시스템 프로바이더는 이 클래스가 정의하는 추상 메서드들을 구현하는 구체 구현체예요. 프로바이더는 URI 스킴으로 식별되며, 기본 프로바이더는 URI 스킴 "file"로 식별돼요.

출처: Java API Reference

본문

FileSystems 클래스는 파일 시스템 프로바이더가 어떻게 찾아지고 로드되는지 정의해요. 기본 프로바이더는 보통 시스템 기본 프로바이더지만, 시스템 속성 java.nio.file.spi.DefaultFileSystemProvider를 설정하면 오버라이드할 수 있어요.

프로바이더는 하나 이상의 FileSystem 인스턴스의 팩토리예요. 각 파일 시스템은 URI로 식별되는데, 그 URI의 스킴은 프로바이더의 스킴과 일치해요. 예를 들어 기본 파일 시스템은 "file:///"로 식별되고, 메모리 기반 파일 시스템은 "memory:///?name=logfs"처럼 식별될 수 있어요. newFileSystem 메서드로 파일 시스템을 만들고, getFileSystem 메서드로 기존 파일 시스템 참조를 얻어요.

이 클래스의 모든 메서드는 여러 동시 스레드가 사용하기에 안전해요. 주요 추상 메서드로는 파일 시스템 접근(getScheme, newFileSystem, getFileSystem, getPath), 파일 연산(newByteChannel, newDirectoryStream, createFile, delete, copy, move, checkAccess), 속성 연산(readAttributes, setAttribute), 그리고 심볼릭 링크·하드 링크 등의 연산이 있어요.

주요 메서드

  • public abstract String getScheme() — 이 프로바이더가 식별되는 URI 스킴을 반환해요.
  • public abstract FileSystem newFileSystem(URI uri, Map<String, ?> env) throws IOException — 지정된 URI로 새 FileSystem을 만들어요.
  • public abstract FileSystem getFileSystem(URI uri) — 기존 FileSystem에 대한 참조를 반환해요.
  • public abstract Path getPath(URI uri) — 이 프로바이더로 URI를 Path로 변환해요.
  • public abstract SeekableByteChannel newByteChannel(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) throws IOException — 파일을 열거나 만들어 바이트 채널을 반환해요.
  • public abstract DirectoryStream<Path> newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter) throws IOException — 디렉터리의 항목들을 반복하는 디렉터리 스트림을 열어요.
  • public abstract void createFile(Path path, FileAttribute<?>... attrs) throws IOException — 빈 새 파일을 만들어요.
  • public abstract void delete(Path path) throws IOException — 파일을 삭제해요.
  • public abstract void copy(Path source, Path target, CopyOption... options) throws IOException — 파일을 복사해요.
  • public abstract void move(Path source, Path target, CopyOption... options) throws IOException — 파일을 이동하거나 이름을 바꿔요.

더 알아보기 (Learn more)