Интерфейс StandardJavaFileManager
- Все суперинтерфейсы:
-
AutoCloseable,Closeable,Flushable,JavaFileManager,OptionChecker
public interface StandardJavaFileManager extends JavaFileManager
Менеджер файлов, основанный на java.io.File и java.nio.file.Path. Общий способ получения экземпляра этого класса — использование getStandardFileManager, например:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector<JavaFileObject> diagnostics =
new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fm = compiler.getStandardFileManager(diagnostics, null, null); Этот менеджер файлов создаёт объекты файлов, представляющие обычные файлы, записи zip-файлов или записи в аналогичных контейнерах на основе файловой системы. Любой объект файла, возвращённый менеджером файлов, реализующим этот интерфейс, должен соблюдать следующее поведение: - Имена файлов не обязательно должны быть каноническими.
- Для объектов файлов, представляющих обычные файлы
- метод
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()))
- метод
- URI, возвращаемый из
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(имя файла относительно и зависит от текущего каталога) -
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(путь не нормализован)
Все реализации этого интерфейса должны поддерживать объекты Path, представляющие файлы в по умолчанию файловой системе. Рекомендуется, чтобы реализации поддерживали объекты Path из любой файловой системы.
- Примечание API:
- Некоторые методы этого интерфейса принимают
Collection<? extends Path>вместоIterable<? extends Path>. Это сделано для предотвращения возможности случайного вызова метода с однимPathв качестве такого аргумента, потому что хотяPathреализуетIterable<Path>, почти никогда не будет правильным вызывать эти методы с однимPathи рассматривать его какIterableего компонентов. - С:
- 1.6
Вложенные классы
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static interface | StandardJavaFileManager.PathFactory | Фабрика для создания |
Вложенные классы/интерфейсы, объявленные в интерфейсе javax.tools.JavaFileManager
JavaFileManager.Location Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
default Path | asPath(FileObject file) | Возвращает путь, если таковой имеется, лежащий в основе этого объекта файла (необязательная операция). |
Iterable<? extends JavaFileObject> | getJavaFileObjects(File... files) | Возвращает объекты файлов, представляющие заданные файлы. |
Iterable<? extends JavaFileObject> | getJavaFileObjects(String... names) | Возвращает объекты файлов, представляющие заданные имена файлов. |
default Iterable<? extends JavaFileObject> | getJavaFileObjects(Path... paths) | Возвращает объекты файлов, представляющие заданные пути. |
Iterable<? extends JavaFileObject> | getJavaFileObjectsFromFiles(Iterable<? extends File> files) | Возвращает объекты файлов, представляющие заданные файлы. |
default Iterable<? extends JavaFileObject> | getJavaFileObjectsFromPaths(Iterable<? extends Path> paths) | Возвращает объекты файлов, представляющие заданные пути. |
Iterable<? extends JavaFileObject> | getJavaFileObjectsFromStrings(Iterable<String> names) | Возвращает объекты файлов, представляющие заданные имена файлов. |
Iterable<? extends File> | getLocation(JavaFileManager.Location location) | Возвращает путь поиска, связанный с заданным расположением. |
default Iterable<? extends Path> | getLocationAsPaths(JavaFileManager.Location location) | Возвращает путь поиска, связанный с заданным расположением. |
boolean | isSameFile(FileObject a,
FileObject b) | Сравнивает два объекта файла и возвращает true, если они представляют один и тот же канонический файл, запись zip-архива или запись в любом файловой системе контейнере. |
void | setLocation(JavaFileManager.Location location,
Iterable<? extends File> files) | Связывает заданный путь поиска с заданным расположением. |
default void | setLocationForModule(JavaFileManager.Location location,
String moduleName,
Collection<? extends Path> paths) | Связывает заданный путь поиска с заданным модулем и расположением, которое должно быть расположением, ориентированным на модуль или выходным. |
default void | setLocationFromPaths(JavaFileManager.Location location,
Collection<? extends Path> paths) | Связывает заданный путь поиска с заданным расположением. |
default void | setPathFactory(StandardJavaFileManager.PathFactory f) | Указывает фабрику, которая может использоваться для создания пути из строки или серии строк. |
Методы, объявленные в интерфейсе javax.tools.JavaFileManager
close, contains, flush, getClassLoader, getFileForInput, getFileForOutput, getJavaFileForInput, getJavaFileForOutput, getLocationForModule, getLocationForModule, getServiceLoader, handleOption, hasLocation, inferBinaryName, inferModuleName, list, listLocationsForModules Методы, объявленные в интерфейсе javax.tools.OptionChecker
isSupportedOption Методы
isSameFile
boolean isSameFile(FileObject a,
FileObject b) Сравнивает два объекта файла и возвращает true, если они представляют один и тот же канонический файл, запись zip-файла или запись в любом файловой системе контейнера.
- Определено в:
-
isSameFileв интерфейсеJavaFileManager - Параметры:
-
a- объект файла -
b- объект файла - Возвращает:
- true, если заданные объекты файла представляют один и тот же канонический файл, запись zip-файла или путь; в противном случае false
- Исключения:
-
IllegalArgumentException- если любой из аргументов был создан с помощью другой реализации файлового менеджера
getJavaFileObjectsFromFiles
Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(Iterable<? extends File> files)
Возвращает объекты файлов, представляющие заданные файлы.
- Параметры:
-
files- список файлов - Возвращает:
- список объектов файлов
- Исключения:
-
IllegalArgumentException- если список файлов включает директорию
getJavaFileObjectsFromPaths
default Iterable<? extends JavaFileObject> getJavaFileObjectsFromPaths(Iterable<? extends Path> paths)
Возвращает объекты файлов, представляющие заданные пути.
- Требования к реализации:
- Базовая реализация преобразует каждый путь в файл и вызывает
getJavaObjectsFromFiles. Исключение IllegalArgumentException будет выброшено, если какой-либо из путей не может быть преобразован в файл. - Параметры:
-
paths- список путей - Возвращает:
- список объектов файлов
- Исключения:
-
IllegalArgumentException- если список путей включает директорию или если этот файловый менеджер не поддерживает ни один из заданных путей. - С:
- 9
getJavaFileObjects
Iterable<? extends JavaFileObject> getJavaFileObjects(File... files)
Возвращает объекты файлов, представляющие заданные файлы. Метод-удобство, эквивалентный:
getJavaFileObjectsFromFiles(Arrays.asList(files))
- Параметры:
-
files- массив файлов - Возвращает:
- список объектов файлов
- Исключения:
-
IllegalArgumentException- если массив файлов включает директорию -
NullPointerException- если заданный массив содержит нулевые элементы
getJavaFileObjects
default Iterable<? extends JavaFileObject> getJavaFileObjects(Path... paths)
Возвращает объекты файлов, представляющие заданные пути. Метод-удобство, эквивалентный:
getJavaFileObjectsFromPaths(Arrays.asList(paths))
- Параметры:
-
paths- массив путей - Возвращает:
- список объектов файлов
- Исключения:
-
IllegalArgumentException- если массив файлов включает директорию -
NullPointerException- если заданный массив содержит нулевые элементы - С:
- 9
getJavaFileObjectsFromStrings
Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names)
Возвращает объекты файлов, представляющие заданные имена файлов.
- Параметры:
-
names- список имён файлов - Возвращает:
- список объектов файлов
- Исключения:
-
IllegalArgumentException- если список имён файлов включает директорию
getJavaFileObjects
Iterable<? extends JavaFileObject> getJavaFileObjects(String... names)
Возвращает объекты файлов, представляющие заданные имена файлов. Метод-удобство, эквивалентный:
getJavaFileObjectsFromStrings(Arrays.asList(names))
- Параметры:
-
names- список имён файлов - Возвращает:
- список объектов файлов
- Исключения:
-
IllegalArgumentException- если массив имён файлов включает директорию -
NullPointerException- если заданный массив содержит нулевые элементы
setLocation
void setLocation(JavaFileManager.Location location,
Iterable<? extends File> files)
throws IOException Связывает заданный путь поиска с заданной локацией. Любое предыдущее значение будет отброшено. Если местоположение ориентировано на модуль или является местоположением вывода, любые модульные ассоциации, заданные с помощью setLocationForModule, будут отменены.
- Параметры:
-
location- местоположение -
files- список файлов, еслиnullиспользовать стандартный путь поиска для данной локации - Исключения:
-
IllegalArgumentException- еслиlocationявляется местоположением вывода иfilesне содержит ровно один элемент -
IOException- еслиlocationявляется местоположением вывода и не представляет существующую директорию - См. также:
getLocation(javax.tools.JavaFileManager.Location)
setLocationFromPaths
default void setLocationFromPaths(JavaFileManager.Location location,
Collection<? extends Path> paths)
throws IOException Связывает заданный путь поиска с заданной локацией. Любое предыдущее значение будет отброшено. Если местоположение ориентировано на модуль или является местоположением вывода, любые модульные ассоциации, заданные с помощью setLocationForModule, будут отменены.
- Требования к реализации:
- Стандартная реализация преобразует каждый путь в файл и вызывает
getJavaObjectsFromFiles. Если какой-либо из путей не может быть преобразован в файл, будет выброшено исключение IllegalArgumentException. - Параметры:
-
location- расположение -
paths- список путей, еслиnullиспользовать стандартный путь поиска для этого расположения - Исключения:
-
IllegalArgumentException- еслиlocationявляется расположением для вывода иpathsне содержит ровно один элемент, или если этот менеджер файлов не поддерживает ни один из заданных путей -
IOException- еслиlocationявляется расположением для вывода иpathsне представляет собой существующую директорию - С момента:
- 9
- См. также:
getLocation(javax.tools.JavaFileManager.Location)
setLocationForModule
default void setLocationForModule(JavaFileManager.Location location,
String moduleName,
Collection<? extends Path> paths)
throws IOException Связывает заданный путь поиска с заданным модулем и расположением, которое должно быть модульным или расположением для вывода. Любое предыдущее значение будет отброшено. Это переопределяет любое стандартное связывание, полученное из пути поиска, связанного с самим расположением. Все такие модульные связи будут отменены, если новый путь поиска будет связан с расположением вызовом setLocation или setLocationFromPaths.
- Параметры:
-
location- расположение -
moduleName- имя модуля -
paths- путь поиска для связывания с расположением и модулем. - Исключения:
-
IllegalStateException- если расположение не является модульным или расположением для вывода. -
UnsupportedOperationException- если эта операция не поддерживается этим менеджером файлов. -
IOException- еслиlocationявляется расположением для вывода иpathsне представляет собой существующую директорию - С момента:
- 9
- См. также:
-
setLocation(javax.tools.JavaFileManager.Location,java.lang.Iterable<? extends java.io.File>),setLocationFromPaths(javax.tools.JavaFileManager.Location,java.util.Collection<? extends java.nio.file.Path>)
getLocation
Iterable<? extends File> getLocation(JavaFileManager.Location location)
Возвращает путь поиска, связанный с данным расположением.
- Параметры:
-
location- расположение - Возвращает:
- список файлов или
nullесли у этого расположения нет связанного пути поиска - Исключения:
-
IllegalStateException- если любой элемент пути поиска не может быть преобразован в File, или если путь поиска не может быть представлен как простой ряд файлов. - См. также:
-
setLocation(javax.tools.JavaFileManager.Location, java.lang.Iterable<? extends java.io.File>),Path.toFile()
getLocationAsPaths
default Iterable<? extends Path> getLocationAsPaths(JavaFileManager.Location location)
Возвращает путь поиска, связанный с данным расположением.
- Требования к реализации:
- Стандартная реализация вызывает
getLocationи затем возвращаетIterable, сформированный путем вызоваtoPath()для каждогоFileвозвращаемого изgetLocation. - Параметры:
-
location- расположение - Возвращает:
- список путей или
nullесли у этого расположения нет связанного пути поиска - Исключения:
-
IllegalStateException- если путь поиска не может быть представлен как простой ряд путей. - С момента:
- 9
- См. также:
setLocationFromPaths(javax.tools.JavaFileManager.Location, java.util.Collection<? extends java.nio.file.Path>)
asPath
default Path asPath(FileObject file)
Возвращает путь, если таковой имеется, лежащий в основе этого объекта файла (необязательная операция). Объекты файлов, полученные из FileSystem, включая файловую систему по умолчанию, обычно имеют соответствующий объект Path ниже. В таких случаях этот метод может быть использован для доступа к этому объекту.
- Требования к реализации:
- Стандартная реализация выбрасывает
UnsupportedOperationExceptionдля всех файлов. - Параметры:
-
file- объект файла - Возвращает:
- путь, представляющий тот же самый артефакт файловой системы
- Исключения:
-
IllegalArgumentException- если у объекта файла нет подлежащего пути -
UnsupportedOperationException- если операция не поддерживается этим менеджером файлов - С момента:
- 9
setPathFactory
default void setPathFactory(StandardJavaFileManager.PathFactory f)
Укажите фабрику, которая может использоваться для генерации пути из строки или серии строк. Если этот метод не вызван, будет использована фабрика, метод getPath которой эквивалентен вызову java.nio.file.Paths.get(first, more).
- Требования к реализации:
- По умолчанию этот метод игнорирует предоставленную фабрику.
- Параметры:
-
f- фабрика - С:
- 9
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.compiler/javax/tools/StandardJavaFileManager.html