Spec-Zone.ru › OpenJDK 24

Интерфейс StandardJavaFileManager

Все суперинтерфейсы:
AutoCloseable, Closeable, Flushable, JavaFileManager, OptionChecker
public interface StandardJavaFileManager extends JavaFileManager
Менеджер файлов, основанный на классе 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()
    • должен быть абсолютным (иметь схему) и
    • должен иметь нормализованный компонент пути, который можно разрешить без контекста, специфичного для процесса, например, текущей директории (имена файлов должны быть абсолютными).
Согласно этим правилам, следующие URI, например, разрешены:
  • 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:
Некоторые методы этого интерфейса принимают коллекцию вместо строки. Это сделано для предотвращения случайного вызова метода с одной строкой в качестве аргумента, поскольку, хотя Path реализует интерфейс, почти никогда не будет правильным вызывать эти методы с одной строкой и рассматривать её как коллекцию её компонентов.
С:
1.6

Краткое описание вложенных классов

Модификатор и тип Интерфейс Описание
static interface  StandardJavaFileManager.PathFactory
Фабрика для создания объектов Path из строк.

Вложенные классы/интерфейсы, объявленные в интерфейсе 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)
Устарело.
Используйте getJavaFileObjectsFromPaths(Collection) вместо этого, чтобы предотвратить случайный вызов метода с единственной строкой в качестве аргумента.
default Iterable<? extends JavaFileObject> getJavaFileObjectsFromPaths(Collection<? 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, 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 - если заданный массив содержит нулевые элементы

установить местоположение

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, будут отменены.
Требования к реализации:
Базовая реализация лениво преобразует каждый путь в файл и вызывает setLocation. 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.
Требования к реализации:
Стандартная реализация выбрасывает UnsupportedOperationException.
Параметры:
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, 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/StandardJavaFileManager.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API