public interface StandardJavaFileManager
基于 java.io.File 的文件管理器。获取此类实例的一般方法是使用 getStandardFileManager,例如:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();此文件管理器创建的文件对象表示常规 文件、 zip 文件条目或者基于类似文件系统的容器中的条目。从实现此接口的文件管理器返回的任何文件对象都必须遵守以下行为:DiagnosticCollector<JavaFileObject>
diagnostics = newDiagnosticCollector<JavaFileObject>()
; StandardJavaFileManager fm = compiler.getStandardFileManager(diagnostics, null, null);
FileObject.delete()
等效于 File.delete()
, FileObject.getLastModified()
等效于 File.lastModified()
, FileObject.getCharContent(boolean)
、FileObject.openInputStream()
和 FileObject.openReader(boolean)
必须成功执行:
new FileInputStream(new File(fileObject.toUri()))
FileObject.openOutputStream()
和 FileObject.openWriter()
必须成功执行:
new FileOutputStream(new File(fileObject.toUri()))
FileObject.toUri()
返回的 URI
file:///C:/Documents%20and%20Settings/UncleBob/BobsApp/Test.java
jar:///C:/Documents%20and%20Settings/UncleBob/lib/vendorA.jar!com/vendora/LibraryClass.class
file:BobsApp/Test.java
(文件名称是相对的并且依赖于当前目录) jar:lib/vendorA.jar!com/vendora/LibraryClass.class
(路径的前半部分依赖于当前路径,而 ! 后面的部分合法) Test.java
(此 URI 依赖于当前目录并且没有模式) jar:///C:/Documents%20and%20Settings/UncleBob/BobsApp/../lib/vendorA.jar!com/vendora/LibraryClass.class
(路径没有标准化)
嵌套类摘要 |
---|
从接口 javax.tools.JavaFileManager 继承的嵌套类/接口 |
---|
JavaFileManager.Location |
方法摘要 | |
---|---|
Iterable<? extends JavaFileObject> |
getJavaFileObjects(File... files) 获取表示给定文件的文件对象。 |
Iterable<? extends JavaFileObject> |
getJavaFileObjects(String... names) 获取表示给定文件名称的文件对象。 |
Iterable<? extends JavaFileObject> |
getJavaFileObjectsFromFiles(Iterable<? extends File> files) 获取表示给定文件的文件对象。 |
Iterable<? extends JavaFileObject> |
getJavaFileObjectsFromStrings(Iterable<String> names) 获取表示给定文件名称的文件对象。 |
Iterable<? extends File> |
getLocation(JavaFileManager.Location location) 获取与给定位置关联的路径。 |
boolean |
isSameFile(FileObject a, FileObject b) 比较两个文件对象,如果它们表示相同的规范文件、zip 文件条目或者基于任何文件系统的容器中的条目,则返回 true。 |
void |
setLocation(JavaFileManager.Location location, Iterable<? extends File> path) 将给定路径与给定位置关联。 |
从接口 javax.tools.JavaFileManager 继承的方法 |
---|
close, flush, getClassLoader, getFileForInput, getFileForOutput, getJavaFileForInput, getJavaFileForOutput, handleOption, hasLocation, inferBinaryName, list |
从接口 javax.tools.OptionChecker 继承的方法 |
---|
isSupportedOption |
方法详细信息 |
---|
boolean isSameFile(FileObject a, FileObject b)
JavaFileManager
中的
isSameFile
a
- 文件对象
b
- 文件对象
IllegalArgumentException
- 如果其中一个参数是使用另一个文件管理器实现创建的
Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(Iterable<? extends File> files)
files
- 文件列表
IllegalArgumentException
- 如果文件列表包含目录
Iterable<? extends JavaFileObject> getJavaFileObjects(File... files)
getJavaFileObjectsFromFiles(Arrays.asList(files))
files
- 文件数组
IllegalArgumentException
- 如果文件数组包含目录
NullPointerException
- 如果给定数组包含 null 元素
Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names)
names
- 文件名称列表
IllegalArgumentException
- 如果文件名称列表包含目录
Iterable<? extends JavaFileObject> getJavaFileObjects(String... names)
getJavaFileObjectsFromStrings(Arrays.asList(names))
names
- 文件名称列表
IllegalArgumentException
- 如果文件名称数组包含目录
NullPointerException
- 如果给定数组包含 null 元素
void setLocation(JavaFileManager.Location location, Iterable<? extends File> path) throws IOException
location
- 位置
path
- 文件列表,如果为
null
,则使用此位置的默认路径
IllegalArgumentException
- 如果位置为一个输出位置并且路径不完全包含一个元素
IOException
- 如果位置是一个输出位置并且路径不表示现有目录
getLocation(javax.tools.JavaFileManager.Location)
Iterable<? extends File> getLocation(JavaFileManager.Location location)
location
- 位置
null
setLocation(javax.tools.JavaFileManager.Location, java.lang.Iterable
)