Spec-Zone.ru › OpenJDK 25

Интерфейс 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
А следующие URI недопустимы (причина указана в скобках):
  • 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(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)
Задает фабрику, которую можно использовать для создания пути из строки или последовательности строк.

Методы, объявленные в интерфейсе 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 является местоположением вывода и не представляет существующий каталог
См. также:
  • getLocation(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(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(JavaFileManager.Location, Iterable)
  • setLocationFromPaths(JavaFileManager.Location, Collection)

getLocation

Iterable<? extends File> getLocation(JavaFileManager.Location location)
Возвращает путь поиска, связанный с указанным местоположением.
Параметры:
location - местоположение
Возвращает:
список файлов или null, если с этим местоположением не связан путь поиска
Выбрасывает:
IllegalStateException - если какой-либо элемент пути поиска нельзя преобразовать в File или если путь поиска нельзя представить в виде простого списка файлов.
См. также:
  • setLocation(JavaFileManager.Location, Iterable)
  • Path.toFile()

getLocationAsPaths

default Iterable<? extends Path> getLocationAsPaths(JavaFileManager.Location location)
Возвращает путь поиска, связанный с указанным местоположением.
Требования к реализации:
Реализация по умолчанию вызывает getLocation, а затем возвращает Iterable, сформированный вызовом toPath() для каждого File, возвращенного из getLocation.
Параметры:
location - местоположение
Возвращает:
список путей или null, если с этим местоположением не связан путь поиска
Выбрасывает:
IllegalStateException - если путь поиска нельзя представить в виде простого списка путей.
Начиная с:
9
См. также:
  • setLocationFromPaths(JavaFileManager.Location, Collection)

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

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