StandardJavaFileManager — java.io.File 기반 표준 파일 매니저
StandardJavaFileManager — java.io.File 기반 표준 파일 매니저
JavaFileManager의 구현 중에서도 가장 흔히 쓰이는 것이 StandardJavaFileManager예요. 이 인터페이스는 java.io.File과 java.nio.file.Path 기반으로 파일을 다루는 표준 파일 매니저예요. 실제 파일시스템의 소스·클래스 파일을 컴파일할 때 기본으로 사용돼요.
JavaCompiler.getStandardFileManager(...)로 얻는 것이 대표적인 사용법이에요.
본문
StandardJavaFileManager는 JavaFileManager를 확장한 인터페이스예요.
public interface StandardJavaFileManager extends JavaFileManager
얻는 방법은 이래요.
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
StandardJavaFileManager fm = compiler.getStandardFileManager(diagnostics, null, null);
주요 메서드는 다음과 같아요.
Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(Iterable<? extends File> files)
Iterable<? extends JavaFileObject> getJavaFileObjectsFromPaths(Iterable<? extends Path> paths)
Iterable<? extends JavaFileObject> getJavaFileObjects(File... files)
Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names)
void setLocation(Location location, Iterable<? extends File> files) throws IOException
Iterable<? extends File> getLocation(Location location)
getJavaFileObjectsFromFiles/getJavaFileObjectsFromPaths— 파일·경로 목록을 자바 파일 객체로 변환해요.getJavaFileObjects— 가변 인자로 파일을 받아 자바 파일 객체로 변환해요.getJavaFileObjectsFromStrings— 파일 이름 문자열 목록을 자바 파일 객체로 변환해요.setLocation/getLocation— 특정 위치(클래스 패스, 출력 등)에 파일 목록을 설정하거나 조회해요.
전형적인 컴파일 흐름은 파일 객체 목록을 얻어 JavaCompiler.getTask(...)에 넘기는 것이에요. 이 인터페이스는 JavaFileManager를 실용적으로 구현한 표준 형태로, 대부분의 프로그램 내 컴파일 시나리오에서 기본 선택이에요. javax.tools 패키지에 속해요.