public interface JavaFileManager extends Closeable, Flushable, OptionChecker
ãã¡ã€ã«ã»ãããŒãžã£ã§æ°ããJavaFileObjectãæ§ç¯ããéã¯ãããããã©ãã«äœæããããæå®ããå¿ èŠããããŸãã ããšãã°ããã¡ã€ã«ã»ãããŒãžã£ã䜿ã£ãŠãã¡ã€ã«ã»ã·ã¹ãã äžã®éåžžãã¡ã€ã«ã管çããå Žåã¯ãçŸåšã®ãã£ã¬ã¯ããª(äœæ¥ãã£ã¬ã¯ããª)ãããã¡ã€ã«ã®äœæãæ€çŽ¢ãè¡ãããã©ã«ãã®å ŽæãšããŠäœ¿çšããã®ãäžè¬çã§ãã ãã¡ã€ã«ã»ãããŒãžã£ã«ã¯ããã¡ã€ã«ã®äœæå Žæã瀺ããã³ãã倿°æäŸãããå¯èœæ§ããããŸãã ãããã®ãã³ããç¡èŠããããã«ããã¡ã€ã«ã»ãããŒãžã£ãèšå®ããããšãã§ããŸãã
ãã®ã€ã³ã¿ãã§ãŒã¹ã«å«ãŸããäžéšã®ã¡ãœããã¯ãã¯ã©ã¹åã䜿çšããŸãã ãããã®ã¯ã©ã¹åã¯ããJavaä»®æ³ãã·ã³ä»æ§ãã§å®çŸ©ãããŠããå éšåœ¢åŒã§ãå®å šæå®ã®ã¯ã©ã¹åããã³ã€ã³ã¿ãã§ãŒã¹åãšããŠæå®ããå¿ èŠããããŸãã 䟿å®äžãã.ããšã/ãã¯äº€æå¯èœã§ãã å éšåœ¢åŒã®å®çŸ©ã«ã€ããŠã¯ããJavaâ¢ä»®æ³ãã·ã³ä»æ§ãã®ç¬¬4ç« ãåç §ããŠãã ããã
解説: ãã®å Žåããjava/lang.package-infoãããjava/lang/package-infoãããjava.lang.package-infoãã®3çš®é¡ã®ååããã¹ãŠæå¹ã§ãç䟡ã§ããããšã«ãªããŸãã ãJavaâ¢èšèªä»æ§ãã®ã»ã¯ã·ã§ã³13.1ããã€ããªã®åœ¢åŒãã«å®çŸ©ããããã€ããªåãšæ¯èŒããŠãã ããã
ååã®å€§æåãšå°æåãæ£ããåºå¥ããå¿
èŠããããŸãã ãã¹ãŠã®ååã®å€§æåãšå°æåãåºå¥ãããŸãã ããšãã°ããã¡ã€ã«åã®å€§æåãšå°æåã®åºå¥ã¯è¡ããªããããã®éããèªèãããã¡ã€ã«ã»ã·ã¹ãã ããããšããŸãã ãã®å ŽåãFile.getCanonicalFile()ãŸãã¯åæ§ã®ææ®µã䜿ã£ãŠããã¡ã€ã«ã»ãªããžã§ã¯ã(ãã¡ã€ã«ã衚ã)ã®å€§æåãšå°æåã®åºå¥ãä¿æããããã«ããŸãã ã·ã¹ãã ã倧æåãšå°æåã®åºå¥ãèªèããªãå Žåã¯ããã®ä»ã®ææ®µã§ããã¡ã€ã«ã»ãªããžã§ã¯ãã®å€§æåãšå°æåã®åºå¥ãä¿æããå¿
èŠããããŸãã
çžå¯Ÿå: ãã®ã€ã³ã¿ãã§ãŒã¹ã«å«ãŸããäžéšã®ã¡ãœããã¯ãçžå¯Ÿåã䜿çšããŸãã çžå¯Ÿåã¯ãäžé£ã®ãã¹ã»ã»ã°ã¡ã³ã(null以å€ã空以å€)ãã/ãã§åºåã£ã圢åŒã®ååã§ããã.ããŸãã¯ã..ãã¯ç¡å¹ãªãã¹ã»ã»ã°ã¡ã³ãã§ãã æå¹ãªçžå¯Ÿåã¯ãRFC 3986ã®ã»ã¯ã·ã§ã³ 3.3ã®ãpath-rootlessãèŠåã«åŸãå¿ èŠããããŸãã éå ¬åŒã«ã¯ãæ¬¡ã®æ¡ä»¶ãtrueã«ãªãããã«ããŸãã
URI.create(relativeName).normalize().getPath().equals(relativeName)
ãã®ã€ã³ã¿ãã§ãŒã¹ã«å«ãŸãããã¹ãŠã®ã¡ãœããã¯ãSecurityExceptionãã¹ããŒããå¯èœæ§ããããŸãã
ãã®ã€ã³ã¿ãã§ãŒã¹ã®ãªããžã§ã¯ãã¯ããã«ãã¹ã¬ããã»ã¢ã¯ã»ã¹ããµããŒãããŠããªããŠãããŸããŸãããã€ãŸããåæåã¯å¿ èŠãããŸããã ãã ãããã®ãªããžã§ã¯ãã«ãã£ãŠäœæãããè€æ°ã®ãã¡ã€ã«ã»ãªããžã§ã¯ããžã®äžŠè¡ã¢ã¯ã»ã¹ã¯ãµããŒãããŠããå¿ èŠããããŸãã
å®è£ ã«ããã£ãŠã®ããŒã: ãã®èŠä»¶ããããããJarOutputStreamãžã®åºåã®åçŽãªå®è£ ã§ã¯ãå®è£ ãšããŠäžååã§ãã ããã§ãJarOutputStreamãçŽæ¥è¿ãJavaFileObjectãäœæããã®ã§ã¯ãªããã³ã³ãã³ãããã£ãã·ã¥ã«æ ŒçŽããçµäºãããJarOutputStreamã«æžã蟌ãããã«ããŸãã
æç€ºçã«èš±å¯ãããŠããªãå Žåã«åŒæ°ãšããŠnullãæå®ããããšããã®ã€ã³ã¿ãã§ãŒã¹ã«å«ãŸãããã¹ãŠã®ã¡ãœããã¯NullPointerExceptionãã¹ããŒããå¯èœæ§ããããŸãã
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) |
æå®ã®å Žæã®æå®ã®åºæºã«äžèŽãããã¹ãŠã®ãã¡ã€ã«ã»ãªããžã§ã¯ããäžèŠ§è¡šç€ºããŸãã
|
isSupportedOptionClassLoader getClassLoader(JavaFileManager.Location location)
ANNOTATION_PROCESSOR_PATHã®å Žæã®ã¯ã©ã¹ã»ããŒããŒãèŠæ±ããŸãã location - å ŽænullSecurityException - çŸåšã®ã»ãã¥ãªãã£ã»ã³ã³ããã¹ãã§ã¯ã©ã¹ã»ããŒããŒãäœæã§ããªãå ŽåIllegalStateException - close()ãåŒã³åºããããã®ãã¡ã€ã«ã»ãããŒãžã£ãå床éãããšãã§ããªãå ŽåIterable<JavaFileObject> list(JavaFileManager.Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse) throws IOException
ããŒã: ãã®ãã¡ã€ã«ã»ãããŒãžã£ã«ãšã£ãŠæªç¥ã®å Žæãæå®ãããå Žåããnullãè¿ãããããšã¯ãããŸããã ãŸããäŸå€ãçæãããããšããããŸããã
location - å ŽæpackageName - ããã±ãŒãžåkinds - ãããã®çš®é¡ã®ãªããžã§ã¯ãã®ã¿è¿ãrecurse - trueã®å Žåãããµãããã±ãŒãžããå«ãŸããIOException - å
¥åºåãšã©ãŒãçºçããå ŽåããŸãã¯close()ãåŒã³åºããããã®ãã¡ã€ã«ã»ãããŒãžã£ãå床éãããšãã§ããªãå ŽåIllegalStateException - close()ãåŒã³åºããããã®ãã¡ã€ã«ã»ãããŒãžã£ãå床éãããšãã§ããªãå ŽåString inferBinaryName(JavaFileManager.Location location, JavaFileObject file)
location - å Žæfile - ãã¡ã€ã«ã»ãªããžã§ã¯ãnullIllegalStateException - close()ãåŒã³åºããããã®ãã¡ã€ã«ã»ãããŒãžã£ãå床éãããšãã§ããªãå Žåboolean isSameFile(FileObject a, FileObject b)
a - ãã¡ã€ã«ã»ãªããžã§ã¯ãb - ãã¡ã€ã«ã»ãªããžã§ã¯ãIllegalArgumentException - ããããã®åŒæ°ãå¥ã®ãã¡ã€ã«ã»ãããŒãžã£ã§äœæãããåŒæ°ã§ããããã®ãã¡ã€ã«ã»ãããŒãžã£ãå€éšãã¡ã€ã«ã»ãªããžã§ã¯ãããµããŒãããŠããªãå Žåboolean handleOption(String current, Iterator<String> remaining)
currentããã®ãã¡ã€ã«ã»ãããŒãžã£ã®ãªãã·ã§ã³ã§ããå Žåã¯ãremainingãããã®ãªãã·ã§ã³ã«å¯Ÿãããã¹ãŠã®åŒæ°ã䜿çšããtrueãè¿ããŸããããã§ãªãå Žåã¯falseãè¿ããŸãã current - çŸåšã®ãªãã·ã§ã³remaining - æ®ãã®ãªãã·ã§ã³IllegalArgumentException - ãã®ãã¡ã€ã«ã»ãããŒãžã£ã«å¯Ÿãããã®ãªãã·ã§ã³ãäžæ£ã«äœ¿çšãããå ŽåIllegalStateException - close()ãåŒã³åºããããã®ãã¡ã€ã«ã»ãããŒãžã£ãå床éãããšãã§ããªãå Žåboolean hasLocation(JavaFileManager.Location location)
location - å ŽæJavaFileObject getJavaFileForInput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind) throws IOException
location - å ŽæclassName - ã¯ã©ã¹ã®ååkind - ãã¡ã€ã«ã®çš®é¡ãSOURCEãŸãã¯CLASSã®ããããã§ããå¿
èŠãããnullãè¿ãããå¯èœæ§ãããIllegalArgumentException - ãã®ãã¡ã€ã«ã»ãããŒãžã£ã«ãšã£ãŠæªç¥ã®å Žæãæå®ããããã¡ã€ã«ã»ãããŒãžã£ãæªç¥ã®å ŽæããµããŒãããŠããªãå ŽåããŸãã¯ãã¡ã€ã«ã®çš®é¡ãæå¹ã§ãªãå ŽåIOException - å
¥åºåãšã©ãŒãçºçããå ŽåããŸãã¯close()ãåŒã³åºããããã®ãã¡ã€ã«ã»ãããŒãžã£ãå床éãããšãã§ããªãå ŽåIllegalStateException - close()ãåŒã³åºããããã®ãã¡ã€ã«ã»ãããŒãžã£ãå床éãããšãã§ããªãå ŽåJavaFileObject getJavaFileForOutput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject sibling) throws IOException
ãã®ãã¡ã€ã«ã»ãããŒãžã£ã¯ããªãã·ã§ã³ãšããŠãå åŒãŠã£ãžã§ãããåºåå ã®ãã³ããšããŠäœ¿çšããå¯èœæ§ããããŸãã ãã®ãã³ãã®å³å¯ãªã»ãã³ãã£ãã¯ã¹ã¯æå®ãããŸããã ããšãã°JDKã³ã³ãã€ã©javacã¯ãã¯ã©ã¹ã»ãã¡ã€ã«ã®åºåãã£ã¬ã¯ããªãæå®ãããŠããªãå ŽåããœãŒã¹ã»ãã¡ã€ã«ãšåããã£ã¬ã¯ããªã«ã¯ã©ã¹ã»ãã¡ã€ã«ãé 眮ããŸãã ãã®åŠçã簡䟿åãããããjavacã¯ããã®ã¡ãœãããåŒã³åºããšãããœãŒã¹ã»ãã¡ã€ã«ãå åŒãŠã£ãžã§ãããšããŠæå®ããããšããããŸãã
location - å ŽæclassName - ã¯ã©ã¹ã®ååkind - ãã¡ã€ã«ã®çš®é¡ãSOURCEãŸãã¯CLASSã®ããããã§ããå¿
èŠãããsibling - é
眮ã®ãã³ããšããŠäœ¿çšããããã¡ã€ã«ã»ãªããžã§ã¯ã; nullãå¯IllegalArgumentException - ãã®ãã¡ã€ã«ã»ãããŒãžã£ã«ãšã£ãŠæªç¥ã®å
åŒãŠã£ãžã§ãããæå®ãããå Žåããã®ãã¡ã€ã«ã»ãããŒãžã£ã«ãšã£ãŠæªç¥ã®å Žæãæå®ããããã¡ã€ã«ã»ãããŒãžã£ãæªç¥ã®å ŽæããµããŒãããŠããªãå ŽåããŸãã¯ãã¡ã€ã«ã®çš®é¡ãæå¹ã§ãªãå ŽåIOException - å
¥åºåãšã©ãŒãçºçããå ŽåããŸãã¯close()ãåŒã³åºããããã®ãã¡ã€ã«ã»ãããŒãžã£ãå床éãããšãã§ããªãå ŽåIllegalStateException - close()ãåŒã³åºããããã®ãã¡ã€ã«ã»ãããŒãžã£ãå床éãããšãã§ããªãå Žå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()ãåŒã³åºããããã®ãã¡ã€ã«ã»ãããŒãžã£ãå床éãããšãã§ããªãå ŽåFileObject getFileForOutput(JavaFileManager.Location location, String packageName, String relativeName, FileObject sibling) throws IOException
ãã®ãã¡ã€ã«ã»ãããŒãžã£ã¯ããªãã·ã§ã³ãšããŠãå åŒãŠã£ãžã§ãããåºåå ã®ãã³ããšããŠäœ¿çšããå¯èœæ§ããããŸãã ãã®ãã³ãã®å³å¯ãªã»ãã³ãã£ãã¯ã¹ã¯æå®ãããŸããã ããšãã°JDKã³ã³ãã€ã©javacã¯ãã¯ã©ã¹ã»ãã¡ã€ã«ã®åºåãã£ã¬ã¯ããªãæå®ãããŠããªãå ŽåããœãŒã¹ã»ãã¡ã€ã«ãšåããã£ã¬ã¯ããªã«ã¯ã©ã¹ã»ãã¡ã€ã«ãé 眮ããŸãã ãã®åŠçã簡䟿åãããããjavacã¯ããã®ã¡ãœãããåŒã³åºããšãããœãŒã¹ã»ãã¡ã€ã«ãå åŒãŠã£ãžã§ãããšããŠæå®ããããšããããŸãã
è¿ããããªããžã§ã¯ãããœãŒã¹ã»ãã¡ã€ã«ãŸãã¯ã¯ã©ã¹ã»ãã¡ã€ã«ã衚ãå Žåãããã¯JavaFileObjectã®ã€ã³ã¹ã¿ã³ã¹ã§ããå¿
èŠããããŸãã
éå
¬åŒã«ã¯ããã®ã¡ãœããã§è¿ããããã¡ã€ã«ã»ãªããžã§ã¯ãã¯ãå Žæãããã±ãŒãžåãããã³çžå¯Ÿåãé£çµããå Žæããå
åŒåŒæ°ã®æ¬¡ã«ãããŸãã äŸã«ã€ããŠã¯ãgetFileForInputãåç
§ããŠãã ããã
location - å ŽæpackageName - ããã±ãŒãžårelativeName - çžå¯Ÿåsibling - é
眮ã®ãã³ããšããŠäœ¿çšããããã¡ã€ã«ã»ãªããžã§ã¯ã; nullãå¯IllegalArgumentException - ãã®ãã¡ã€ã«ã»ãããŒãžã£ã«ãšã£ãŠæªç¥ã®å
åŒãŠã£ãžã§ãããæå®ãããå Žåããã®ãã¡ã€ã«ã»ãããŒãžã£ã«ãšã£ãŠæªç¥ã®å Žæãæå®ããããã¡ã€ã«ã»ãããŒãžã£ãæªç¥ã®å ŽæããµããŒãããŠããªãå ŽåããŸãã¯relativeNameãæå¹ã§ãªãå ŽåIOException - å
¥åºåãšã©ãŒãçºçããå ŽåããŸãã¯close()ãåŒã³åºããããã®ãã¡ã€ã«ã»ãããŒãžã£ãå床éãããšãã§ããªãå ŽåIllegalStateException - close()ãåŒã³åºããããã®ãã¡ã€ã«ã»ãããŒãžã£ãå床éãããšãã§ããªãå Žåvoid flush()
throws IOException
flushãã€ã³ã¿ãã§ãŒã¹FlushableIOException - å
¥åºåãšã©ãŒãçºçããå Žåclose()void close()
throws IOException
closeãã€ã³ã¿ãã§ãŒã¹AutoCloseablecloseãã€ã³ã¿ãã§ãŒã¹CloseableIOException - å
¥åºåãšã©ãŒãçºçããå Žåflush() ãã°ãŸãã¯æ©èœãéä¿¡
詳现ãªAPIãªãã¡ã¬ã³ã¹ããã³éçºè
ããã¥ã¡ã³ãã«ã€ããŠã¯ãJava SEã®ããã¥ã¡ã³ããåç
§ããŠãã ããã ãã®ããã¥ã¡ã³ãã«ã¯ãæŠå¿µçãªæŠèŠãçšèªã®å®çŸ©ãåé¿æ¹æ³ãæå¹ãªã³ãŒãäŸãªã©ã®ãéçºè
ã察象ã«ãããã詳现ãªèª¬æãå«ãŸããŠããŸãã
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyãåç
§ããŠãã ããã