Интерфейс 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)должны выполняться успешно, если успешно выполняется следующий код (без учета проблем кодировки):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 |
Фабрика для создания объектов Path из строк. |
Вложенные классы/интерфейсы, объявленные в интерфейсе JavaFileManager
JavaFileManager.Location | Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static interface |
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 |
Задает фабрику, которую можно использовать для создания пути из строки или последовательности строк. |
Методы, объявленные в интерфейсе JavaFileManager
close, contains, flush, getClassLoader, getFileForInput, getFileForOutput, getFileForOutputForOriginatingFiles, getJavaFileForInput, getJavaFileForOutput, getJavaFileForOutputForOriginatingFiles, getLocationForModule, getLocationForModule, getServiceLoader, handleOption, hasLocation, inferBinaryName, inferModuleName, list, listLocationsForModules | Модификатор и тип | Метод | Описание |
|---|---|---|
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. |
Iterable |
list |
Перечисляет все файловые объекты, соответствующие заданным критериям в указанном расположении, ориентированном на пакеты. |
default Iterable |
listLocationsForModules |
Перечисляет расположения всех модулей в расположении, ориентированном на модули, или в выходном расположении. |
Методы, объявленные в интерфейсе OptionChecker
isSupportedOption | Модификатор и тип | Метод | Описание |
|---|---|---|
int |
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— если заданный массив содержит элементы null
getJavaFileObjects
default Iterable<? extends JavaFileObject> getJavaFileObjects(Path... paths)
Возвращает файловые объекты, представляющие заданные пути. Вспомогательный метод, эквивалентный:
getJavaFileObjectsFromPaths(Arrays.asList(paths))
- Требования к реализации:
- Реализация по умолчанию вызовет
NullPointerExceptionтолько в том случае, если его вызовет getJavaFileObjectsFromPaths(Collection). - Параметры:
-
paths— массив путей - Возвращает:
- список файловых объектов
- Вызывает исключение:
-
IllegalArgumentException— если массив файлов содержит каталог или если этот менеджер файлов не поддерживает какие-либо из заданных путей -
NullPointerException— если заданный массив содержит элементы null - С момента:
- 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— если заданный массив содержит элементы null
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— если какой-либо элемент пути поиска нельзя преобразовать в File или если путь поиска нельзя представить в виде простого набора файлов. - См. также:
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, 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.
getJavaFileObjectsFromPaths(Collection), чтобы избежать случайного вызова метода с единственнымPathв качестве аргумента.