Интерфейс 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 из строк. |
Вложенные классы/интерфейсы, объявленные в интерфейсе 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 |
Задает фабрику, которую можно использовать для создания пути из строки или последовательности строк. |
Методы, объявленные в интерфейсе JavaFileManager
close, contains, flush, getClassLoader, getFileForInput, getFileForOutput, getFileForOutputForOriginatingFiles, getJavaFileForInput, getJavaFileForOutput, getJavaFileForOutputForOriginatingFiles, getLocationForModule, getLocationForModule, getServiceLoader, handleOption, hasLocation, inferBinaryName, inferModuleName, list, listLocationsForModules
Методы, объявленные в интерфейсе 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- если указанный массив содержит элементы 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.compiler/javax/tools/StandardJavaFileManager.html
getJavaFileObjectsFromPaths(Collection), чтобы предотвратить случайный вызов метода с однимPathв качестве аргумента.