Spec-Zone.ru › OpenJDK 21

Интерфейс StandardJavaFileManager

Все суперинтерфейсы:
AutoCloseable, Closeable, Flushable, JavaFileManager, OptionChecker
public interface StandardJavaFileManager extends JavaFileManager
Менеджер файлов, основанный на java.io.File и java.nio.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:
Некоторые методы в этом интерфейсе принимают 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(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) вместо этого, чтобы предотвратить возможность случайного вызова метода с единственным Path в качестве такого аргумента.
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 - если заданный массив содержит нулевые элементы

setLocation

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 - если любой элемент пути поиска не может быть преобразован в Файл, или если путь поиска не может быть представлен как простая последовательность файлов.
См. также:
  • 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, 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

Spec-Zone.ru

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