JavaFileManager — 자바 소스·클래스 파일을 다루는 파일 매니저 인터페이스

JavaFileManager — 자바 소스·클래스 파일을 다루는 파일 매니저 인터페이스

컴파일러 같은 도구는 자바 소스 파일과 클래스 파일을 만들고 읽어야 해요. JavaFileManager는 그런 자바 소스·클래스 파일을 다루는 파일 매니저를 위한 인터페이스예요. 여기서 '파일'은 일반 파일뿐 아니라 메모리 등 다양한 데이터 소스를 아우르는 추상화예요.

이 인터페이스는 FileObjectJavaFileObject를 만들어내고, StandardLocation 같은 표준 위치를 기준으로 파일을 찾아주는 역할을 해요.

출처: Java API Reference

본문

JavaFileManager는 인터페이스로 AutoCloseable을 확장해요.

public interface JavaFileManager extends AutoCloseable

주요 메서드는 다음과 같아요.

ClassLoader getClassLoader(Location location)
Iterable<FileObject> list(Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse)
JavaFileObject getJavaFileForInput(Location location, String className, JavaFileObject.Kind kind)
JavaFileObject getJavaFileForOutput(Location location, String className, JavaFileObject.Kind kind, FileObject sibling)
void flush() throws IOException
void close() throws IOException
  • getJavaFileForInput / getJavaFileForOutput — 주어진 위치·클래스명·종류에 맞는 자바 파일 객체를 읽기용·쓰기용으로 얻어요.
  • list(...) — 특정 위치·패키지에서 조건에 맞는 파일 객체들을 나열해요.
  • getClassLoader(...) — 특정 위치에 대한 클래스로더를 얻어요.
  • flush / close — 버퍼를 비우거나 파일 매니저를 닫아요.

JavaFileObject를 만들 때 파일 매니저는 어디에 만들지 결정해야 해요. 예를 들어 파일시스템의 일반 파일을 관리한다면 기준이 되는 현재·작업 디렉토리를 가질 가능성이 커요.

StandardJavaFileManager는 이 인터페이스를 java.io.File/java.nio.file.Path 기반으로 구현한 표준 하위 인터페이스예요. javax.tools 패키지에 속해요.

더 알아보기 (Learn more)