AutoCloseable
, Closeable
, Flushable
, JavaFileManager
, OptionChecker
public interface StandardJavaFileManager extends JavaFileManager
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();This file manager creates file objects representing regular files, zip file entries, or entries in similar file system based containers. Any file object returned from a file manager implementing this interface must observe the following behavior:DiagnosticCollector<JavaFileObject>
diagnostics = newDiagnosticCollector<JavaFileObject>()
; StandardJavaFileManager fm = compiler.getStandardFileManager(diagnostics, null, null);
FileObject.delete()
is equivalent to File.delete()
,
FileObject.getLastModified()
is equivalent to File.lastModified()
,
FileObject.getCharContent(boolean)
,
FileObject.openInputStream()
, and
FileObject.openReader(boolean)
must succeed if the following would succeed (ignoring
encoding issues):
new FileInputStream(new File(fileObject.toUri()))
FileObject.openOutputStream()
, and
FileObject.openWriter()
must
succeed if the following would succeed (ignoring encoding
issues):
new FileOutputStream(new File(fileObject.toUri()))
FileObject.toUri()
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
(the file name is relative
and depend on the current directory)
jar:lib/vendorA.jar!/com/vendora/LibraryClass.class
(the first half of the path depends on the current directory,
whereas the component after ! is legal)
Test.java
(this URI depends on the current
directory and does not have a schema)
jar:///C:/Documents%20and%20Settings/UncleBob/BobsApp/../lib/vendorA.jar!com/vendora/LibraryClass.class
(the path is not normalized)
All implementations of this interface must support Path objects representing files in the default file system. It is recommended that implementations should support Path objects from any filesystem.
Collection<? extends Path>
instead of Iterable<? extends Path>
.
This is to prevent the possibility of accidentally calling the method
with a single Path
as such an argument, because although
Path
implements Iterable<Path>
, it would almost never be
correct to call these methods with a single Path
and have it be treated as
an Iterable
of its components.Modifier and Type | Interface | Description |
---|---|---|
static interface |
StandardJavaFileManager.PathFactory |
Factory to create
Path objects from strings. |
JavaFileManager.Location
Modifier and Type | Method | Description |
---|---|---|
default Path |
asPath(FileObject file) |
Returns the path, if any, underlying this file object (optional operation).
|
Iterable<? extends JavaFileObject> |
getJavaFileObjects(File... files) |
Returns file objects representing the given files.
|
Iterable<? extends JavaFileObject> |
getJavaFileObjects(String... names) |
Returns file objects representing the given file names.
|
default Iterable<? extends JavaFileObject> |
getJavaFileObjects(Path... paths) |
Returns file objects representing the given paths.
|
Iterable<? extends JavaFileObject> |
getJavaFileObjectsFromFiles(Iterable<? extends File> files) |
Returns file objects representing the given files.
|
default Iterable<? extends JavaFileObject> |
getJavaFileObjectsFromPaths(Iterable<? extends Path> paths) |
Returns file objects representing the given paths.
|
Iterable<? extends JavaFileObject> |
getJavaFileObjectsFromStrings(Iterable<String> names) |
Returns file objects representing the given file names.
|
Iterable<? extends File> |
getLocation(JavaFileManager.Location location) |
Returns the search path associated with the given location.
|
default Iterable<? extends Path> |
getLocationAsPaths(JavaFileManager.Location location) |
Returns the search path associated with the given location.
|
boolean |
isSameFile(FileObject a,
FileObject b) |
Compares two file objects and return true if they represent the
same canonical file, zip file entry, or entry in any file
system based container.
|
void |
setLocation(JavaFileManager.Location location,
Iterable<? extends File> files) |
Associates the given search path with the given location.
|
default void |
setLocationForModule(JavaFileManager.Location location,
String moduleName,
Collection<? extends Path> paths) |
Associates the given search path with the given module and location,
which must be a module-oriented or output location.
|
default void |
setLocationFromPaths(JavaFileManager.Location location,
Collection<? extends Path> paths) |
Associates the given search path with the given location.
|
default void |
setPathFactory(StandardJavaFileManager.PathFactory f) |
Specify a factory that can be used to generate a path from a string, or series of strings.
|
close, flush, getClassLoader, getFileForInput, getFileForOutput, getJavaFileForInput, getJavaFileForOutput, getLocationForModule, getLocationForModule, getServiceLoader, handleOption, hasLocation, inferBinaryName, inferModuleName, list, listLocationsForModules
isSupportedOption
boolean isSameFile(FileObject a, FileObject b)
isSameFile
in interface JavaFileManager
a
- a file objectb
- a file objectIllegalArgumentException
- if either of the arguments
were created with another file manager implementationIterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(Iterable<? extends File> files)
files
- a list of filesIllegalArgumentException
- if the list of files includes
a directorydefault Iterable<? extends JavaFileObject> getJavaFileObjectsFromPaths(Iterable<? extends Path> paths)
getJavaObjectsFromFiles
.
IllegalArgumentException will be thrown if any of the paths
cannot be converted to a file.paths
- a list of pathsIllegalArgumentException
- if the list of paths includes
a directory or if this file manager does not support any of the
given paths.Iterable<? extends JavaFileObject> getJavaFileObjects(File... files)
getJavaFileObjectsFromFiles(Arrays.asList(files))
files
- an array of filesIllegalArgumentException
- if the array of files includes
a directoryNullPointerException
- if the given array contains null
elementsdefault Iterable<? extends JavaFileObject> getJavaFileObjects(Path... paths)
getJavaFileObjectsFromPaths(Arrays.asList(paths))
paths
- an array of pathsIllegalArgumentException
- if the array of files includes
a directoryNullPointerException
- if the given array contains null
elementsIterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names)
names
- a list of file namesIllegalArgumentException
- if the list of file names
includes a directoryIterable<? extends JavaFileObject> getJavaFileObjects(String... names)
getJavaFileObjectsFromStrings(Arrays.asList(names))
names
- a list of file namesIllegalArgumentException
- if the array of file names
includes a directoryNullPointerException
- if the given array contains null
elementsvoid setLocation(JavaFileManager.Location location, Iterable<? extends File> files) throws IOException
location
- a locationfiles
- a list of files, if null
use the default
search path for this locationIllegalArgumentException
- if location
is an output
location and files
does not contain exactly one elementIOException
- if location
is an output location and
does not represent an existing directorygetLocation(javax.tools.JavaFileManager.Location)
default void setLocationFromPaths(JavaFileManager.Location location, Collection<? extends Path> paths) throws IOException
getJavaObjectsFromFiles
.
IllegalArgumentException
will be thrown if any of the paths cannot be converted to a file.location
- a locationpaths
- a list of paths, if null
use the default
search path for this locationIllegalArgumentException
- if location
is an output
location and paths
does not contain exactly one element
or if this file manager does not support any of the given pathsIOException
- if location
is an output location and
paths
does not represent an existing directorygetLocation(javax.tools.JavaFileManager.Location)
default void setLocationForModule(JavaFileManager.Location location, String moduleName, Collection<? extends Path> paths) throws IOException
location
- the locationmoduleName
- the name of the modulepaths
- the search path to associate with the location and module.IllegalStateException
- if the location is not a module-oriented
or output location.UnsupportedOperationException
- if this operation is not supported by
this file manager.IOException
- if location
is an output location and
paths
does not represent an existing directorysetLocation(javax.tools.JavaFileManager.Location,java.lang.Iterable<? extends java.io.File>)
,
setLocationFromPaths(javax.tools.JavaFileManager.Location,java.util.Collection<? extends java.nio.file.Path>)
Iterable<? extends File> getLocation(JavaFileManager.Location location)
location
- a locationnull
if this location has no
associated search pathIllegalStateException
- if any element of the search path
cannot be converted to a File.setLocation(javax.tools.JavaFileManager.Location, java.lang.Iterable<? extends java.io.File>)
,
Path.toFile()
default Iterable<? extends Path> getLocationAsPaths(JavaFileManager.Location location)
getLocation
and then returns an Iterable
formed by calling toPath()
on each File
returned from getLocation
.location
- a locationnull
if this location has no
associated search pathsetLocationFromPaths(javax.tools.JavaFileManager.Location, java.util.Collection<? extends java.nio.file.Path>)
default Path asPath(FileObject file)
FileSystem
,
including the default file system, typically have a corresponding underlying
Path
object. In such cases, this method may be
used to access that object.UnsupportedOperationException
for all files.file
- a file objectIllegalArgumentException
- if the file object does not have an underlying pathUnsupportedOperationException
- if the operation is not supported by this file managerdefault void setPathFactory(StandardJavaFileManager.PathFactory f)
getPath
method is
equivalent to calling
java.nio.file.Paths.get(first, more)
will be used.f
- the factory Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2017, Oracle and/or its affiliates. 500 Oracle Parkway
Redwood Shores, CA 94065 USA. All rights reserved.
DRAFT 9-internal+0-adhoc.mlchung.jdk9-jdeps