JavaTM Platform
Standard Ed. 6

javax.tools
인터페이스 JavaFileManager

모든 슈퍼 인터페이스:
Closeable , Flushable , OptionChecker
기존의 서브 인터페이스의 일람:
StandardJavaFileManager
기존의 구현 클래스의 일람:
ForwardingJavaFileManager


public interface JavaFileManager
extends Closeable , Flushable , OptionChecker

Java™ 프로그램 언어의 원시 파일이나 클래스 파일을 조작하는 툴전용의 파일 관리자-입니다. 이 문맥에서는, 「파일」이라고 하는 말로, 일반적으로 파일과 그 외의 데이터 소스를 추상적으로 나타냅니다.

파일 관리자-로 새로운 JavaFileObject 를 구축할 때는, 그것들을 어디에 작성하는지를 지정할 필요가 있습니다. 예를 들어, 파일 관리자-를 사용해 파일 시스템상의 일반적으로 파일을 관리하는 경우는, 현재의 디렉토리 (작업 디렉토리)를, 파일의 작성이나 검색을 실시하는 디폴트의 장소로서 사용하는 것이 일반적입니다. 파일 관리자-에는, 파일의 작성 장소를 나타내는 힌트가 다수 제공될 가능성이 있습니다. 이러한 힌트를 무시하도록(듯이), 파일 관리자-를 설정할 수도 있습니다.

이 인터페이스에 포함되는 일부의 메소드는, 클래스명을 사용합니다. 이러한 클래스명은, 「Java 가상 머신 스펙」으로 정의되고 있는 내부 형식에서, 완전 지정의 클래스명 및 인터페이스명으로서 지정할 필요가 있습니다. 편의상, 「.」와「/」은 교환 가능합니다. 내부 형식의 정의에 대해서는,「Java 가상 머신 스펙」의 제 4 장을 참조해 주세요.

해설: 이 경우, 「java/lang.package-info」, 「java/lang/package-info」, 「java.lang.package-info」의 3 종류의 이름이 모두 유효해, 등가이게 됩니다. 「Java 언어 스펙 (JLS)」의 섹션 13.1 「The Form of a Binary」에 정의된 바이너리명과 비교해 주세요.

이름의 대문자와 소문자를 올바르게 구별할 필요가 있습니다. 모든 이름의 대문자와 소문자가 구별됩니다. 예를 들어, 파일명의 대문자와 소문자의 구별은 실시하지 않지만, 그 차이를 인식하는 파일 시스템이 있다고 합니다. 이 경우,File.getCanonicalFile() 또는 같은 수단을 사용해, 파일 객체 (파일을 나타낸다)의 대문자와 소문자의 구별을 보관 유지하도록(듯이) 합니다. 시스템이 대문자와 소문자의 구별을 인식하지 않는 경우는, 그 외의 수단으로, 파일 객체의 대문자와 소문자의 구별을 보관 유지할 필요가 있습니다.

상대명 :이 인터페이스에 포함되는 일부의 메소드는, 상대명을 사용합니다. 상대명은, 일련의 패스 세그먼트(segment) (null 이외, 빈 상태(empty) 이외)를 「/」으로 단락지은 형식의 이름입니다. 「.」또는 「..」(은)는 무효인 패스 세그먼트(segment)입니다. 유효한 상대명은,RFC 3986  의 섹션 3.3 에 정의되고 있는 「path-rootless」의 규칙에 준거하고 있을 필요가 있습니다. 비공식에는, 다음의 조건이 true 가 되도록(듯이) 합니다.

  URI. create (relativeName). normalize (). getPath (). equals(relativeName)

이 인터페이스에 포함되는 모든 메소드는, SecurityException 를 throw 할 가능성이 있습니다.

이 인터페이스의 객체는, multi-thread 액세스를 지원하고 있지 않아도 괜찮습니다. 즉, 동기화는 필요 없습니다. 다만, 이 객체에 의해 작성된 복수의 파일 객체에의 병행 액세스는 지원하고 있을 필요가 있습니다.

구현상의 주의: 이 요건이 있기 (위해)때문에,JarOutputStream 에의 출력의 단순한 구현에서는, 구현으로서 불충분합니다. 거기서, JarOutputStream 를 직접 돌려주는 JavaFileObject 를 작성하는 것이 아니라, 컨텐츠를 캐쉬에 포함해, 종료하면(자) JarOutputStream 에 기입하도록(듯이) 합니다.

명시적으로 허가되어 있지 않은 경우에 인수로서 null 가 지정되면(자), 이 인터페이스에 포함되는 모든 메소드는 NullPointerException 를 throw 할 가능성이 있습니다.

도입된 버젼:
1.6
관련 항목:
JavaFileObject , FileObject

상자의 클래스의 개요
static interface JavaFileManager.Location
          파일 객체의 장소의 인터페이스입니다.
 
메소드의 개요
 void close ()
          이 파일 관리자-에 의해 직접적 또는 간접적으로 열린 자원이 있으면, 그것을 해제합니다.
 void flush ()
          이 파일 관리자-에 의해 직접적 또는 간접적으로 열린 출력용 자원이 있으면, 그것을 플래시 합니다.
 ClassLoader getClassLoader (JavaFileManager.Location  location)
          지정된 장소로부터 플러그 인을 로드하는 클래스 로더를 가져옵니다.
 FileObject getFileForInput (JavaFileManager.Location  location, String  packageName, String  relativeName)
          지정된 장소에 있는, 특정의 패키지내의 특정의상대명을 나타내는 입력용파일 객체를 가져옵니다.
 FileObject getFileForOutput (JavaFileManager.Location  location, String  packageName, String  relativeName, FileObject  sibling)
          지정된 장소에 있는, 특정의 패키지내의 특정의상대명을 나타내는 출력용파일 객체를 가져옵니다.
 JavaFileObject getJavaFileForInput (JavaFileManager.Location  location, String  className, JavaFileObject.Kind  kind)
          지정된 장소에 있는, 특정의 종류의 특정의 클래스를 나타내는 입력용파일 객체를 가져옵니다.
 JavaFileObject getJavaFileForOutput (JavaFileManager.Location  location, String  className, JavaFileObject.Kind  kind, FileObject  sibling)
          지정된 장소에 있는, 특정의 종류의 특정의 클래스를 나타내는 출력용파일 객체를 가져옵니다.
 boolean handleOption (String  current, Iterator <String > remaining)
          1 개의 옵션을 처리합니다.
 boolean hasLocation (JavaFileManager.Location  location)
          이 파일 관리자-에 있어 기존의 장소일지 어떨지를 판단합니다.
 String inferBinaryName (JavaFileManager.Location  location, JavaFileObject  file)
          장소에 근거해 파일 객체의 바이너리명을 추측합니다.
 boolean isSameFile (FileObject  a, FileObject  b)
          2 개의 파일 객체를 비교해, 이것들에 의해 나타내지는 부하의 객체가 같은 경우는 true 를 돌려줍니다.
 Iterable <JavaFileObject > list (JavaFileManager.Location  location, String  packageName, Set <JavaFileObject.Kind > kinds, boolean recurse)
          지정의 장소의 지정의 기준에 일치하는 모든 파일 객체를 일람표 가리킵니다.
 
인터페이스 javax.tools. OptionChecker 로부터 상속된 메소드
isSupportedOption
 

메소드의 상세

getClassLoader

ClassLoader  getClassLoader(JavaFileManager.Location  location)
지정된 장소로부터 플러그 인을 로드하는 클래스 로더를 가져옵니다. 예를 들어, 주석 프로세서를 로드하는 경우, 컴파일러는 ANNOTATION_PROCESSOR_PATH 의 클래스 로더를 요구합니다.

파라미터:
location - 장소
반환값:
지정의 장소의 클래스 로더. 지정의 장소로부터 플러그 인을 로드할 수 없는 경우, 또는 미지의 장소가 지정되었을 경우는 null
예외:
SecurityException - 현재의 시큐리티 문맥으로 클래스 로더를 작성할 수 없는 경우
IllegalStateException - close() 가 불려 가 이 파일 관리자-를 재차 열 수가 없는 경우

list

Iterable <JavaFileObject > list(JavaFileManager.Location  location,
                              String  packageName,
                              Set <JavaFileObject.Kind > kinds,
                              boolean recurse)
                              throws IOException 
지정의 장소의 지정의 기준에 일치하는 모든 파일 객체를 일람표 가리킵니다. 재귀 처리가 유효하게 되어 있는 경우, 「서브 패키지」내의 파일 객체도 일람표 나타납니다.

주:이 파일 관리자-에 있어 미지의 장소가 지정되었을 경우도,null 가 돌려주어질 것은 없습니다. 또, 예외가 생성되는 일도 없습니다.

파라미터:
location - 장소
packageName - 패키지명
kinds - 이러한 종류의 객체만 돌려주는
recurse - true 의 경우, 「서브 패키지」도 포함된다
반환값:
지정된 기준에 일치하는 파일 객체의 Iterable
예외:
IOException - 입출력 에러가 발생했을 경우, 또는 close() 가 불려 가 이 파일 관리자-를 재차 열 수가 없는 경우
IllegalStateException - close() 가 불려 가 이 파일 관리자-를 재차 열 수가 없는 경우

inferBinaryName

String  inferBinaryName(JavaFileManager.Location  location,
                       JavaFileObject  file)
장소에 근거해 파일 객체의 바이너리명을 추측합니다. 유효한 JLS 바이너리명이 아닌 바이너리명이 반환되는 경우도 있습니다.

파라미터:
location - 장소
file - 파일 객체
반환값:
바이너리명. 지정된 장소에 파일 객체가 발견되지 않는 경우는 null
예외:
IllegalStateException - close() 가 불려 가 이 파일 관리자-를 재차 열 수가 없는 경우

isSameFile

boolean isSameFile(FileObject  a,
                   FileObject  b)
2 개의 파일 객체를 비교해, 이것들에 의해 나타내지는 부하의 객체가 같은 경우는 true 를 돌려줍니다.

파라미터:
a - 파일 객체
b - 파일 객체
반환값:
지정된 파일 객체에 의해 나타내지는 부하의 객체가 같은 경우는 true
예외:
IllegalArgumentException - 어느 쪽인가의 인수가 다른 파일 관리자-로 작성된 인수이며, 이 파일 관리자-가 외부 파일 객체를 지원하고 있지 않는 경우

handleOption

boolean handleOption(String  current,
                     Iterator <String > remaining)
1 개의 옵션을 처리합니다. current 가 이 파일 관리자-의 옵션인 경우는,remaining 로부터 그 옵션에 대한 모든 인수를 사용해, true 를 돌려줍니다. 그렇지 않은 경우는 false 를 돌려줍니다.

파라미터:
current - 현재의 옵션
remaining - 나머지의 옵션
반환값:
이 옵션이 이 파일 관리자-로 처리되었을 경우는 true, 그렇지 않은 경우는 false
예외:
IllegalArgumentException - 이 파일 관리자-에 대한 이 옵션이 부정하게 사용되었을 경우
IllegalStateException - close() 가 불려 가 이 파일 관리자-를 재차 열 수가 없는 경우

hasLocation

boolean hasLocation(JavaFileManager.Location  location)
이 파일 관리자-에 있어 기존의 장소일지 어떨지를 판단합니다.

파라미터:
location - 장소
반환값:
기존의 장소인 경우는 true

getJavaFileForInput

JavaFileObject  getJavaFileForInput(JavaFileManager.Location  location,
                                   String  className,
                                   JavaFileObject.Kind  kind)
                                   throws IOException 
지정된 장소에 있는, 특정의 종류의 특정의 클래스를 나타내는 입력용파일 객체를 가져옵니다.

파라미터:
location - 장소
className - 클래스의 이름
kind - 파일의 종류. SOURCE 또는 CLASS
반환값:
파일 객체. 파일이 존재하지 않는 경우는 null 가 돌려주어질 가능성이 있다
예외:
IllegalArgumentException - 이 파일 관리자-에 있어 미지의 장소가 지정되어 파일 관리자-가 미지의 장소를 지원하고 있지 않는 경우, 또는 파일의 종류가 유효하지 않은 경우
IOException - 입출력 에러가 발생했을 경우, 또는 close() 가 불려 가 이 파일 관리자-를 재차 열 수가 없는 경우
IllegalStateException - close() 가 불려 가 이 파일 관리자-를 재차 열 수가 없는 경우

getJavaFileForOutput

JavaFileObject  getJavaFileForOutput(JavaFileManager.Location  location,
                                    String  className,
                                    JavaFileObject.Kind  kind,
                                    FileObject  sibling)
                                    throws IOException 
지정된 장소에 있는, 특정의 종류의 특정의 클래스를 나타내는 출력용파일 객체를 가져옵니다.

이 파일 관리자-는, 옵션으로서 형제 위젯를 출력처의 힌트로서 사용할 가능성이 있습니다. 이 힌트의 엄밀한 시멘틱스는 지정되지 않습니다. 예를 들어 Sun 의 컴파일러 javac 는, 클래스 파일의 출력 디렉토리가 지정되어 있지 않은 경우, 원시 파일과 같은 디렉토리에 클래스 파일을 배치합니다. 이 처리를 간편화하기 (위해)때문에, javac 는, 이 메소드를 호출할 때, 원시 파일을 형제 위젯로서 지정하는 일이 있습니다.

파라미터:
location - 장소
className - 클래스의 이름
kind - 파일의 종류. SOURCE 또는 CLASS
sibling - 배치의 힌트로서 사용되는 파일 객체. null 도 가능
반환값:
출력용 파일 객체
예외:
IllegalArgumentException - 이 파일 관리자-에 있어 미지의 형제 위젯가 지정되었을 경우, 이 파일 관리자-에 있어 미지의 장소가 지정되어 파일 관리자-가 미지의 장소를 지원하고 있지 않는 경우, 또는 파일의 종류가 유효하지 않은 경우
IOException - 입출력 에러가 발생했을 경우, 또는 close() 가 불려 가 이 파일 관리자-를 재차 열 수가 없는 경우
IllegalStateException - close() 가 불려 가 이 파일 관리자-를 재차 열 수가 없는 경우

getFileForInput

FileObject  getFileForInput(JavaFileManager.Location  location,
                           String  packageName,
                           String  relativeName)
                           throws IOException 
지정된 장소에 있는, 특정의 패키지내의 특정의상대명을 나타내는 입력용파일 객체를 가져옵니다.

반환된 객체가원시 파일 또는클래스 파일을 나타내는 경우,JavaFileObject 의 인스턴스일 필요가 있습니다.

비공식에는, 이 메소드로 반환되는 파일 객체는, 장소, 패키지명, 및 상대명을 연결한 장소에 있습니다. 예를 들어,SOURCE_PATH 에 있는 com.sun.tools.javac 패키지내의 프로퍼티 파일 resources/compiler.properties 를 찾고 있는 경우, 다음과 같이 해 이 메소드를 호출할 수가 있습니다.

getFileForInput(SOURCE_PATH, "com.sun.tools.javac", "resources/compiler.properties");

이 호출이 Windows 상에서 실행되어 SOURCE_PATH 가 "C:\Documents and Settings\UncleBob\src\share\classes" 로 설정되어 있었을 경우, 유효한 결과는, 파일 "C:\Documents and Settings\UncleBob\src\share\classes\com\sun\tools\javac\resources\compiler.properties" 를 나타내는 파일 객체가 됩니다.

파라미터:
location - 장소
packageName - 패키지명
relativeName - 상대명
반환값:
파일 객체. 파일이 존재하지 않는 경우는 null 가 돌려주어질 가능성이 있다
예외:
IllegalArgumentException - 이 파일 관리자-에 있어 미지의 장소가 지정되어 파일 관리자-가 미지의 장소를 지원하고 있지 않는 경우, 또는 relativeName 가 유효하지 않은 경우
IOException - 입출력 에러가 발생했을 경우, 또는 close() 가 불려 가 이 파일 관리자-를 재차 열 수가 없는 경우
IllegalStateException - close() 가 불려 가 이 파일 관리자-를 재차 열 수가 없는 경우

getFileForOutput

FileObject  getFileForOutput(JavaFileManager.Location  location,
                            String  packageName,
                            String  relativeName,
                            FileObject  sibling)
                            throws IOException 
지정된 장소에 있는, 특정의 패키지내의 특정의상대명을 나타내는 출력용파일 객체를 가져옵니다.

이 파일 관리자-는, 옵션으로서 형제 위젯를 출력처의 힌트로서 사용할 가능성이 있습니다. 이 힌트의 엄밀한 시멘틱스는 지정되지 않습니다. 예를 들어 Sun 의 컴파일러 javac 는, 클래스 파일의 출력 디렉토리가 지정되어 있지 않은 경우, 원시 파일과 같은 디렉토리에 클래스 파일을 배치합니다. 이 처리를 간편화하기 (위해)때문에, javac 는, 이 메소드를 호출할 때, 원시 파일을 형제 위젯로서 지정하는 일이 있습니다.

반환된 객체가원시 파일 또는클래스 파일을 나타내는 경우,JavaFileObject 의 인스턴스일 필요가 있습니다.

비공식에는, 이 메소드로 반환되는 파일 객체는, 장소, 패키지명, 및 상대명을 연결한 장소인가, 형제 인수의 다음에 있습니다. 예는,getFileForInput 를 참조해 주세요.

파라미터:
location - 장소
packageName - 패키지명
relativeName - 상대명
sibling - 배치의 힌트로서 사용되는 파일 객체. null 도 가능
반환값:
파일 객체
예외:
IllegalArgumentException - 이 파일 관리자-에 있어 미지의 형제 위젯가 지정되었을 경우, 이 파일 관리자-에 있어 미지의 장소가 지정되어 파일 관리자-가 미지의 장소를 지원하고 있지 않는 경우, 또는 relativeName 가 유효하지 않은 경우
IOException - 입출력 에러가 발생했을 경우, 또는 close() 가 불려 가 이 파일 관리자-를 재차 열 수가 없는 경우
IllegalStateException - close() 가 불려 가 이 파일 관리자-를 재차 열 수가 없는 경우

flush

void flush()
           throws IOException 
이 파일 관리자-에 의해 직접적 또는 간접적으로 열린 출력용 자원이 있으면, 그것을 플래시 합니다. 닫혀진 파일 관리자-를 플래시 해도, 효과는 없습니다.

정의:
인터페이스 Flushable 내의 flush
예외:
IOException - 입출력 에러가 발생했을 경우
관련 항목:
close()

close

void close()
           throws IOException 
이 파일 관리자-에 의해 직접적 또는 간접적으로 열린 자원이 있으면, 그것을 해제합니다. 그러자(면), 이 파일 관리자-가 무효가 되어, 그 후 이 객체상에서 행해지는 메소드 호출이나, 이 객체를 통해 취득되는 객체는, 명시적으로 허가되어 있지 않은 한 미정도리가 됩니다. 다만, 벌써 닫혀진 파일 관리자-를 닫아도, 효과는 없습니다.

정의:
인터페이스 Closeable 내의 close
예외:
IOException - 입출력 에러가 발생했을 경우
관련 항목:
flush()

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.