Интерфейс StandardJavaFileManager
- Все суперинтерфейсы:
-
AutoCloseable,Closeable,Flushable,JavaFileManager,OptionChecker
public interface StandardJavaFileManager extends JavaFileManager
Менеджер файлов, основанный на
java.io.File и java.nio.file.Path. Общий способ получения экземпляра этого класса — использование 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)должны выполняться успешно, если бы выполнялись следующие действия (без учёта проблем с кодировкой):newFileInputStream(newFile(fileObject.toUri())) - и методы
FileObject.openOutputStream(), иFileObject.openWriter()должны выполняться успешно, если бы выполнялись следующие действия (без учёта проблем с кодировкой):newFileOutputStream(newFile(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 |
Фабрика для создания Path объектов из строк. |
Вложенные классы/интерфейсы, объявленные в интерфейсе javax.tools.JavaFileManager
JavaFileManager.Location
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
default Path |
asPath |
Возвращает путь, если таковой имеется, лежащий в основе этого объекта файла (необязательная операция). |
Iterable |
getJavaFileObjects |
Возвращает объекты файлов, представляющие заданные файлы. |
Iterable |
getJavaFileObjects |
Возвращает объекты файлов, представляющие заданные имена файлов. |
default Iterable |
getJavaFileObjects |
Возвращает объекты файлов, представляющие заданные пути. |
Iterable |
getJavaFileObjectsFromFiles |
Возвращает объекты файлов, представляющие заданные файлы. |
default Iterable |
getJavaFileObjectsFromPaths |
Устарело. |
default Iterable |
getJavaFileObjectsFromPaths |
Возвращает объекты файлов, представляющие заданные пути. |
Iterable |
getJavaFileObjectsFromStrings |
Возвращает объекты файлов, представляющие заданные имена файлов. |
Iterable |
getLocation |
Возвращает путь поиска, связанный с заданным местоположением. |
default Iterable |
getLocationAsPaths |
Возвращает путь поиска, связанный с заданным местоположением. |
boolean |
isSameFile |
Сравнивает два объекта файла и возвращает true, если они представляют один и тот же канонический файл, запись zip-файла или запись в любом контейнере, основанном на файловой системе. |
void |
setLocation |
Связывает заданный путь поиска с заданным местоположением. |
default void |
setLocationForModule |
Связывает заданный путь поиска с заданным модулем и местоположением, которые должны быть ориентированными на модуль или местоположением вывода. |
default void |
setLocationFromPaths |
Связывает заданный путь поиска с заданным местоположением. |
default void |
setPathFactory |
Указывает фабрику, которая может использоваться для создания пути из строки или серии строк. |
Методы, объявленные в интерфейсе javax.tools.JavaFileManager
close, contains, flush, getClassLoader, getFileForInput, getFileForOutput, getFileForOutputForOriginatingFiles, getJavaFileForInput, getJavaFileForOutput, getJavaFileForOutputForOriginatingFiles, 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(Collection<? extends Path> paths)
Возвращает объекты файла, представляющие заданные пути.
- Требования к реализации:
- По умолчанию реализация лениво преобразует каждый путь в файл и вызывает
getJavaFileObjectsFromFiles.IllegalArgumentExceptionбудет выброшено, если любой из путей не может быть преобразован в файл в момент преобразования. - Параметры:
-
paths- список путей - Возвращает:
- список объектов файла
- Выбрасывает:
-
IllegalArgumentException- если список путей включает каталог или если этот менеджер файлов не поддерживает ни один из заданных путей - С:
- 13
getJavaFileObjectsFromPaths
@Deprecated(since="13") default Iterable<? extends JavaFileObject> getJavaFileObjectsFromPaths(Iterable<? extends Path> paths)
Устарело.
используйте
getJavaFileObjectsFromPaths(Collection) вместо этого, чтобы предотвратить возможность случайного вызова метода с одним Path в качестве такого аргумента. Хотя Path реализует Iterable<Path>, почти никогда не будет верно передавать один Path и рассматривать его как Iterable его компонентов.Возвращает объекты файла, представляющие заданные пути.
- Требования к реализации:
- По умолчанию реализация лениво преобразует каждый путь в файл и вызывает
getJavaFileObjectsFromPaths.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))
- Требования к реализации:
- По умолчанию реализация будет выбрасывать
NullPointerExceptionтолько если getJavaFileObjectsFromPaths(Collection) её выбрасывает. - Параметры:
-
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является выходной локацией и не представляет собой существующий каталог - См. также:
setLocationFromPaths
default void setLocationFromPaths(JavaFileManager.Location location, Collection<? extends Path> paths) throws IOException
Связывает заданный путь поиска с заданной локацией. Любое предыдущее значение будет удалено. Если местоположение ориентировано на модуль или является выходным, любые модульные ассоциации, настроенные с помощью setLocationForModule, будут отменены.
- Требования к реализации:
- По умолчанию реализация лениво преобразует каждый путь в файл и вызывает
setLocation.IllegalArgumentExceptionбудет выброшено, если любой из путей не может быть преобразован в файл в момент преобразования. - Параметры:
-
location- местоположение -
paths- список путей, еслиnullиспользовать путь поиска по умолчанию для этого местоположения - Выбрасывает:
-
IllegalArgumentException- еслиlocationявляется выходной локацией иpathsне содержит ровно одного элемента или если этот менеджер файлов не поддерживает ни один из заданных путей -
IOException- еслиlocationявляется выходной локацией иpathsне представляет собой существующий каталог - С:
- 9
- См. также:
setLocationForModule
default void setLocationForModule(JavaFileManager.Location location, String moduleName, Collection<? extends Path> paths) throws IOException
Связывает заданный путь поиска с указанным модулем и локацией, которая должна быть локацией, ориентированной на модуль или выходной. Любое предыдущее значение будет удалено. Это переопределяет любую ассоциацию по умолчанию, полученную из пути поиска, связанного с самой локацией. Все такие модульные ассоциации будут отменены, если новый путь поиска будет связан с локацией путем вызова setLocation или setLocationFromPaths.
- Требования к реализации:
- По умолчанию реализация выбрасывает
UnsupportedOperationException. - Параметры:
-
location- местоположение -
moduleName- имя модуля -
paths- путь поиска для связывания с локацией и модулем. - Выбрасывает:
-
IllegalStateException- если местоположение не является локацией, ориентированной на модуль или выходной. -
UnsupportedOperationException- если эта операция не поддерживается этим менеджером файлов. -
IOException- еслиlocationявляется выходной локацией иpathsне представляет собой существующий каталог - С:
- 9
- См. также:
getLocation
Iterable<? extends File> getLocation(JavaFileManager.Location location)
Возвращает путь поиска, связанный с заданным расположением.
- Параметры:
-
location- расположение - Возвращает:
- список файлов или
null, если у этого расположения нет связанного пути поиска - Исключение:
-
IllegalStateException- если любой элемент пути поиска не может быть преобразован в Файл, или если путь поиска не может быть представлен как простая последовательность файлов. - См. также:
getLocationAsPaths
default Iterable<? extends Path> getLocationAsPaths(JavaFileManager.Location location)
Возвращает путь поиска, связанный с заданным расположением.
- Требования к реализации:
- В реализации по умолчанию вызывается
getLocation, а затем возвращаетIterable, сформированный вызовомtoPath()для каждогоFile, возвращенного изgetLocation. - Параметры:
-
location- расположение - Возвращает:
- список путей или
null, если у этого расположения нет связанного пути поиска - Исключение:
-
IllegalStateException- если путь поиска не может быть представлен как простая последовательность путей. - С тех пор:
- 9
- См. также:
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, 2023, 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/21/docs/api/java.compiler/javax/tools/StandardJavaFileManager.html
getJavaFileObjectsFromPaths(Collection)вместо этого, чтобы предотвратить возможность случайного вызова метода с единственнымPathв качестве такого аргумента.