Интерфейс JavaFileManager
- Все суперинтерфейсы:
-
AutoCloseable,Closeable,Flushable,OptionChecker
- Все известные подинтерфейсы:
StandardJavaFileManager
- Все известные реализующие классы:
ForwardingJavaFileManager
public interface JavaFileManager extends Closeable, Flushable, OptionChecker
При создании новых JavaFileObject, управляющий файлами должен определить, где их создавать. Например, если управляющий файлами управляет обычными файлами в файловой системе, скорее всего, у него будет текущая/рабочая директория, используемая в качестве стандартного местоположения при создании или поиске файлов. Управляющему файлами могут быть предоставлены различные подсказки о том, где создавать файлы. Управляющий файлами может игнорировать эти подсказки.
Некоторые методы в этом интерфейсе используют имена классов. Такие имена классов должны быть предоставлены во внутреннем формате виртуальной машины Java полностью квалифицированных имён классов и интерфейсов. Для удобства '.' и '/' взаимозаменяемы. Внутренний формат определён в четвёртой главе Спецификации виртуальной машины Java.
Обсуждение: это означает, что имена "java/lang.package-info", "java/lang/package-info", "java.lang.package-info" являются допустимыми и эквивалентными. Сравните с бинарным именем, как определено в Спецификации языка Java, раздел 13.1 "Форма бинарного файла".
Регистр букв важен. Все имена должны рассматриваться как регистрозависимые. Например, некоторые файловые системы имеют регистронезависимые, регистрозависимые имена файлов. Объекты файлов, представляющие такие файлы, должны позаботиться о сохранении регистра, используя File.getCanonicalFile() или аналогичные средства. Если система не регистрозависима, объекты файлов должны использовать другие средства для сохранения регистра.
Относительные имена: некоторые методы в этом интерфейсе используют относительные имена. Относительное имя — это непустая последовательность сегментов пути, разделенных '/'. '.' или '..' являются недопустимыми сегментами пути. Допустимое относительное имя должно соответствовать правилу "path-rootless" из RFC 3986, раздел 3.3. Неформально, это должно быть верно:
Объект этого интерфейса не обязан поддерживать многопотоковый доступ, то есть быть синхронизированным. Однако он должен поддерживать одновременный доступ к различным объектам файлов, созданным этим объектом.
Примечание для реализации: следствие этого требования заключается в том, что тривиальная реализация вывода в JarOutputStream не является достаточной реализацией. То есть, вместо создания JavaFileObject, возвращающего JarOutputStream напрямую, содержимое должно быть кэшировано до закрытия, а затем записано в JarOutputStream.
Если явно не разрешено, все методы в этом интерфейсе могут бросить NullPointerException, если получат null аргумент.
- С:
- 1.6
- Внешние спецификации
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static interface |
JavaFileManager.Location |
Интерфейс для местоположений объектов файлов. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
close() |
Освобождает все ресурсы, открытые этим управляющим файлами напрямую или косвенно. |
default boolean |
contains |
Определяет, содержится ли данный объект файла в указанном местоположении. |
void |
flush() |
Очищает все ресурсы, открытые для вывода этим управляющим файлами напрямую или косвенно. |
ClassLoader |
getClassLoader |
Возвращает загрузчик классов для загрузки плагинов из заданного местоположения с ориентиром на пакеты. |
FileObject |
getFileForInput |
Возвращает объект файла для ввода, представляющий указанное относительное имя в указанном пакете в данном местоположении с ориентиром на пакеты. |
FileObject |
getFileForOutput |
Возвращает объект файла для вывода, представляющий указанное относительное имя в указанном пакете в данном местоположении. |
default FileObject |
getFileForOutputForOriginatingFiles |
Возвращает объект файла для вывода, представляющий указанное относительное имя в указанном пакете в данном местоположении. |
JavaFileObject |
getJavaFileForInput |
Возвращает объект файла для ввода, представляющий указанный класс заданного типа в данном местоположении с ориентиром на пакеты. |
JavaFileObject |
getJavaFileForOutput |
Возвращает объект файла для вывода, представляющий указанный класс заданного типа в данном местоположении с ориентиром на пакеты. |
default JavaFileObject |
getJavaFileForOutputForOriginatingFiles |
Возвращает объект файла для вывода, представляющий указанный класс заданного типа в данном местоположении с ориентиром на пакеты. |
default JavaFileManager.Location |
getLocationForModule |
Получает местоположение для именованного модуля внутри местоположения, которое может быть либо местоположением ориентированным на модули, либо местоположением вывода. |
default JavaFileManager.Location |
getLocationForModule |
Получает местоположение модуля, содержащего конкретный файл, который нужно найти в местоположении, которое может быть либо местоположением, ориентированным на модули, либо местоположением вывода. |
default <S> ServiceLoader |
getServiceLoader |
Получает загрузчик сервисов для определенного класса сервиса из заданного местоположения. |
boolean |
handleOption |
Обрабатывает один параметр. |
boolean |
hasLocation |
Определяет, известно ли местоположение этому управляющему файлами. |
String |
inferBinaryName |
Выводит бинарное имя объекта файла на основе местоположения с ориентиром на пакеты. |
default String |
inferModuleName |
Выводит имя модуля из его местоположения, как возвращается getLocationForModule или listModuleLocations. |
boolean |
isSameFile |
Сравнивает два объекта файла и возвращает true, если они представляют один и тот же базовый объект. |
Iterable |
list |
Выводит все объекты файлов, соответствующие заданным критериям в заданном местоположении с ориентиром на пакеты. |
default Iterable |
listLocationsForModules |
Выводит местоположения для всех модулей в местоположении, ориентированном на модули, или местоположении вывода. |
Методы, объявленные в интерфейсе javax.tools.OptionChecker
isSupportedOption
Подробности методов
getClassLoader
ClassLoader getClassLoader(JavaFileManager.Location location)
ANNOTATION_PROCESSOR_PATH.- Параметры:
-
location- расположение - Возвращает:
- загрузчик классов для заданного расположения; или
null, если загрузка плагинов из заданного расположения отключена или расположение неизвестно - Исключение:
-
IllegalStateException- если был вызванclose()и этот менеджер файлов не может быть повторно открыт -
IllegalArgumentException- если расположение ориентировано на модули
list
Iterable<JavaFileObject> list(JavaFileManager.Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse) throws IOException
Примечание: даже если заданное расположение неизвестно этому менеджеру файлов, он может не вернуть null. Также неизвестное расположение может не вызвать исключение.
- Параметры:
-
location- расположение -
packageName- имя пакета -
kinds- возвращать объекты только этих типов -
recurse- если true, включать "подпакеты" - Возвращает:
- Iterable объектов файлов, соответствующих заданным критериям
- Исключение:
-
IOException- если произошла ошибка ввода-вывода или если был вызванclose()и этот менеджер файлов не может быть повторно открыт -
IllegalArgumentException- если расположение ориентировано на модули -
IllegalStateException- если был вызванclose()и этот менеджер файлов не может быть повторно открыт
inferBinaryName
String inferBinaryName(JavaFileManager.Location location, JavaFileObject file)
- Параметры:
-
location- расположение -
file- объект файла - Возвращает:
- двоичное имя или
nullобъект файла не найден в данном расположении - Исключение:
-
IllegalArgumentException- если расположение ориентировано на модули -
IllegalStateException- если был вызванclose()и этот менеджер файлов не может быть повторно открыт
isSameFile
boolean isSameFile(FileObject a, FileObject b)
- Параметры:
-
a- объект файла -
b- объект файла - Возвращает:
- true, если данные объекты файлов представляют один и тот же базовый объект
- Исключение:
-
IllegalArgumentException- если любой из аргументов был создан с помощью другого менеджера файлов, и этот менеджер файлов не поддерживает внешние объекты файлов
handleOption
boolean handleOption(String current, Iterator<String> remaining)
current является параметром для этого менеджера файлов, он потребляет все аргументы этого параметра из remaining и возвращает true, в противном случае возвращает false.- Параметры:
-
current- текущий параметр -
remaining- оставшиеся параметры - Возвращает:
- true, если этот параметр был обработан этим менеджером файлов, иначе false
- Исключение:
-
IllegalArgumentException- если этот параметр для данного менеджера файлов используется неправильно -
IllegalStateException- если был вызванclose()и этот менеджер файлов не может быть повторно открыт
hasLocation
boolean hasLocation(JavaFileManager.Location location)
- Параметры:
-
location- расположение - Возвращает:
- true, если расположение известно
getJavaFileForInput
JavaFileObject getJavaFileForInput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind) throws IOException
- Параметры:
-
location- расположение -
className- имя класса -
kind- тип файла, должен быть одним изSOURCEилиCLASS - Возвращает:
- объект файла, может вернуть
null, если файл не существует - Исключение:
-
IllegalArgumentException- если расположение неизвестно этому менеджеру файлов и менеджер файлов не поддерживает неизвестные расположения, или тип недействителен, или расположение ориентировано на модули -
IOException- если произошла ошибка ввода-вывода или если был вызванclose()и этот менеджер файлов не может быть повторно открыт -
IllegalStateException- если был вызванclose()и этот менеджер файлов не может быть повторно открыт
getJavaFileForOutput
JavaFileObject getJavaFileForOutput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject sibling) throws IOException
Этот менеджер файлов может принять файл-близнец в качестве подсказки о том, куда поместить вывод. Точные семантика этой подсказки не определена. Компилятор JDK, javac, например, поместит файлы .class в те же каталоги, что и исходные файлы .java, если не указан каталог вывода файлов .class. Для поддержки этого поведения javac может предоставить исходный файл .java в качестве файла-близнеца при вызове этого метода.
- Параметры:
-
location- расположение, ориентированное на пакеты -
className- имя класса -
kind- тип файла, должен быть одним изSOURCEилиCLASS -
sibling- объект файла, используемый в качестве подсказки для размещения; может бытьnull - Возвращает:
- объект файла для вывода
- Исключение:
-
IllegalArgumentException- если файл-близнец не известен этому менеджеру файлов или расположение не известно менеджеру файлов, и он не поддерживает неизвестные расположения, или тип недействителен, или расположение не является расположением вывода -
IOException- если произошла ошибка ввода-вывода или если был вызванclose()и этот менеджер файлов не может быть повторно открыт -
IllegalStateException-close()был вызван, и этот менеджер файлов не может быть повторно открыт
getJavaFileForOutputForOriginatingFiles
default JavaFileObject getJavaFileForOutputForOriginatingFiles(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject... originatingFiles) throws IOException
Предоставленные originatingFiles представляют файлы, которые, каким-то неопределённым образом, были использованы для создания содержимого файла, созданного этим методом. См. originatingElements в Filer.createSourceFile(java.lang.CharSequence, javax.lang.model.element.Element...). Elements.getFileObjectOf(javax.lang.model.element.Element) может быть использован для преобразования Element в FileObject.
- Требования к реализации:
- Стандартная реализация вызывает
getJavaFileForOutput(javax.tools.JavaFileManager.Location, java.lang.String, javax.tools.JavaFileObject.Kind, javax.tools.FileObject)с первым элементомoriginatingFiles, если таковой имеется, в качествеsibling. - Параметры:
-
location- расположение, ориентированное на пакеты -
className- имя класса -
kind- тип файла, должен быть одним изSOURCEилиCLASS -
originatingFiles- файлы, которые способствуют созданию этого нового файла;nullэквивалентно пустомуoriginatingFiles, что означает отсутствие известных исходных файлов - Возвращает:
- объект файла для вывода
- Исключение:
-
IllegalArgumentException- если файл-близнец не известен этому менеджеру файлов или расположение не известно менеджеру файлов, и он не поддерживает неизвестные расположения, или тип недействителен, или расположение не является расположением вывода -
IOException- если произошла ошибка ввода-вывода или если был вызванclose()и этот менеджер файлов не может быть повторно открыт -
IllegalStateException-close()был вызван, и этот менеджер файлов не может быть повторно открыт - С:
- 18
- См. также:
getFileForInput
FileObject getFileForInput(JavaFileManager.Location location, String packageName, String relativeName) throws IOException
Если возвращаемый объект представляет собой файл источника или класса, он должен быть экземпляром JavaFileObject.
Неформально, объект файла, возвращаемый этим методом, находится в конкатенации местоположения, имени пакета и относительного имени. Например, чтобы найти файл свойств "resources/compiler.properties" в пакете "com.sun.tools.javac" в местоположении SOURCE_PATH, этот метод можно вызвать следующим образом:
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".
- Parameters:
-
location- местоположение, ориентированное на пакет -
packageName- имя пакета -
relativeName- относительное имя - Returns:
- объект файла, может вернуть
null, если файл не существует - Throws:
-
IllegalArgumentException- если местоположение неизвестно этому менеджеру файлов, и менеджер файлов не поддерживает неизвестные местоположения, или еслиrelativeNameнедействительно, или если местоположение является местоположением, ориентированным на модуль -
IOException- если произошла ошибка ввода-вывода, или еслиclose()был вызван, и этот менеджер файлов не может быть повторно открыт -
IllegalStateException- еслиclose()был вызван, и этот менеджер файлов не может быть повторно открыт
getFileForOutput
FileObject getFileForOutput(JavaFileManager.Location location, String packageName, String relativeName, FileObject sibling) throws IOException
По желанию, этот менеджер файлов может рассматривать братский файл как подсказку, куда разместить вывод. Точные семантика этой подсказки не определена. Компилятор JDK, javac, например, будет размещать файлы классов в тех же каталогах, что и исходные файлы, если не указан каталог вывода файлов классов. Для обеспечения этого поведения javac может предоставить исходный файл как братский файл при вызове этого метода.
Если возвращаемый объект представляет собой файл источника или класса, он должен быть экземпляром JavaFileObject.
Неформально, объект файла, возвращаемый этим методом, находится в конкатенации местоположения, имени пакета и относительного имени или рядом с аргументом братского файла. См. getFileForInput для примера.
- Parameters:
-
location- местоположение вывода -
packageName- имя пакета -
relativeName- относительное имя -
sibling- объект файла, используемый в качестве подсказки для размещения; может бытьnull - Returns:
- объект файла
- Throws:
-
IllegalArgumentException- если братский файл неизвестен этому менеджеру файлов, или если местоположение неизвестно этому менеджеру файлов, и менеджер файлов не поддерживает неизвестные местоположения, или еслиrelativeNameнедействительно, или если местоположение не является местоположением вывода -
IOException- если произошла ошибка ввода-вывода, или еслиclose()был вызван, и этот менеджер файлов не может быть повторно открыт -
IllegalStateException- еслиclose()был вызван, и этот менеджер файлов не может быть повторно открыт
getFileForOutputForOriginatingFiles
default FileObject getFileForOutputForOriginatingFiles(JavaFileManager.Location location, String packageName, String relativeName, FileObject... originatingFiles) throws IOException
Предоставленные originatingFiles представляют файлы, которые каким-то не уточнённым способом были использованы для создания содержимого файла, созданного этим методом. См. originatingElements в Filer.createResource(javax.tools.JavaFileManager.Location, java.lang.CharSequence, java.lang.CharSequence, javax.lang.model.element.Element...). Elements.getFileObjectOf(javax.lang.model.element.Element) может быть использован для преобразования Element в FileObject.
Неформально, объект файла, возвращаемый этим методом, находится в конкатенации местоположения, имени пакета и относительного имени или в местоположении, выведенном из originatingFiles. См. getFileForInput для примера.
- Implementation Requirements:
- Реализация по умолчанию вызывает
getFileForOutput(javax.tools.JavaFileManager.Location, java.lang.String, java.lang.String, javax.tools.FileObject)с первым элементом изoriginatingFiles, если таковой имеется, в качествеsibling. - Parameters:
-
location- местоположение вывода -
packageName- имя пакета -
relativeName- относительное имя -
originatingFiles- файлы, которые вносят вклад в этот вновь созданный файл;nullэквивалентно пустомуoriginatingFiles, что означает, что нет известных исходных файлов - Returns:
- объект файла
- Throws:
-
IllegalArgumentException- если братский файл неизвестен этому менеджеру файлов, или если местоположение неизвестно этому менеджеру файлов, и менеджер файлов не поддерживает неизвестные местоположения, или еслиrelativeNameнедействительно, или если местоположение не является местоположением вывода -
IOException- если произошла ошибка ввода-вывода, или еслиclose()был вызван, и этот менеджер файлов не может быть повторно открыт -
IllegalStateException- еслиclose()был вызван, и этот менеджер файлов не может быть повторно открыт - Since:
- 18
- See Also:
flush
void flush() throws IOException
- Specified by:
-
flushв интерфейсеFlushable - Throws:
-
IOException- если произошла ошибка ввода-вывода - See Also:
close
void close() throws IOException
- Specified by:
-
closeв интерфейсеAutoCloseable - Specified by:
-
closeв интерфейсеCloseable - Throws:
-
IOException- если произошла ошибка ввода-вывода - See Also:
getLocationForModule
default JavaFileManager.Location getLocationForModule(JavaFileManager.Location location, String moduleName) throws IOException
- Implementation Requirements:
- Эта реализация выбрасывает
UnsupportedOperationException. - Parameters:
-
location- местоположение, ориентированное на модуль -
moduleName- имя модуля, который нужно найти - Returns:
- местоположение для указанного модуля
- Throws:
-
IOException- если произошла ошибка ввода-вывода -
UnsupportedOperationException- если эта операция не поддерживается этим менеджером файлов -
IllegalArgumentException- если местоположение не является ни местоположением вывода, ни местоположением, ориентированным на модуль - Since:
- 9
getLocationForModule
default JavaFileManager.Location getLocationForModule(JavaFileManager.Location location, JavaFileObject fo) throws IOException
- Требования к реализации:
- Эта реализация выбрасывает
UnsupportedOperationException. - Параметры:
-
location- модулеориентированное расположение -
fo- файл - Возвращает:
- модуль, содержащий файл
- Исключение:
-
IOException- если произошла ошибка ввода-вывода -
UnsupportedOperationException- если эта операция не поддерживается этим менеджером файлов -
IllegalArgumentException- если расположение не является ни расположением вывода, ни модулеориентированным расположением - С:
- 9
getServiceLoader
default <S> ServiceLoader<S> getServiceLoader(JavaFileManager.Location location, Class<S> service) throws IOException
META-INF/services.- Требования к реализации:
- Эта реализация выбрасывает
UnsupportedOperationException. - Параметры типа:
S- класс сервиса- Параметры:
-
location- модулеориентированное расположение -
service- объектClassкласса сервиса - Возвращает:
- загрузчик сервисов для данного класса сервиса
- Исключение:
-
IOException- если произошла ошибка ввода-вывода -
UnsupportedOperationException- если эта операция не поддерживается этим менеджером файлов - С:
- 9
inferModuleName
default String inferModuleName(JavaFileManager.Location location) throws IOException
getLocationForModule или listModuleLocations.- Требования к реализации:
- Эта реализация выбрасывает
UnsupportedOperationException. - Параметры:
-
location- пакетно-ориентированное расположение, представляющее модуль - Возвращает:
- имя модуля
- Исключение:
-
IOException- если произошла ошибка ввода-вывода -
UnsupportedOperationException- если эта операция не поддерживается этим менеджером файлов -
IllegalArgumentException- если расположение не известно этому менеджеру файлов - С:
- 9
listLocationsForModules
default Iterable<Set<JavaFileManager.Location>> listLocationsForModules(JavaFileManager.Location location) throws IOException
- Требования к реализации:
- Эта реализация выбрасывает
UnsupportedOperationException. - Параметры:
-
location- модулеориентированное расположение, для которого нужно перечислить модули - Возвращает:
- ряд наборов расположений, содержащих модули
- Исключение:
-
IOException- если произошла ошибка ввода-вывода -
UnsupportedOperationException- если эта операция не поддерживается этим менеджером файлов -
IllegalArgumentException- если расположение не является модулеориентированным расположением - С:
- 9
contains
default boolean contains(JavaFileManager.Location location, FileObject fo) throws IOException
Для пакетно-ориентированного расположения объект файла содержится в расположении, если существуют значения для packageName и relativeName, такие что любой из следующих вызовов вернёт объект файла same:
getFileForInput(location, packageName, relativeName)
getFileForOutput(location, packageName, relativeName, null)
Для модулеориентированного расположения объект файла содержится в расположении, если существует модуль, который может быть получен вызовом:
getLocationForModule(location, moduleName)
- Требования к реализации:
- Эта реализация выбрасывает
UnsupportedOperationException. - Параметры:
-
location- расположение -
fo- объект файла - Возвращает:
- содержится ли файл в расположении
- Исключение:
-
IOException- если возникла проблема с определением результата -
UnsupportedOperationException- если метод не поддерживается - С:
- 9
© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.compiler/javax/tools/JavaFileManager.html