Spec-Zone.ru › OpenJDK 27

Класс FileSystems

java.lang.Object
java.nio.file.FileSystems
public final class FileSystems extends Object
Фабричные методы для файловых систем. Этот класс определяет метод getDefault для получения файловой системы по умолчанию и фабричные методы для создания файловых систем других типов.

Первый вызов любого из методов, определённых этим классом, приводит к загрузке провайдера provider по умолчанию. Провайдер по умолчанию, определяемый схемой URI "file", создаёт FileSystem, которая предоставляет доступ к файловым системам, доступным виртуальной машине Java. Если загрузка или инициализация провайдера по умолчанию завершается неудачей, возникает ошибка неопределённого типа.

Первый вызов метода installedProviders посредством вызова любого из методов newFileSystem, определённых этим классом, обнаруживает и загружает все установленные провайдеры файловых систем. Установленные провайдеры загружаются с помощью механизма загрузки поставщиков служб, определённого классом ServiceLoader. Установленные провайдеры загружаются системным загрузчиком классов. Если системный загрузчик классов недоступен, используется загрузчик классов платформы. Провайдеры обычно устанавливаются путём размещения их в JAR-файле в пути классов приложения; JAR-файл содержит файл конфигурации провайдера с именем java.nio.file.spi.FileSystemProvider в каталоге ресурсов META-INF/services, а в этом файле перечислены одно или несколько полных имён конкретных подклассов FileSystemProvider, имеющих конструктор без аргументов. Порядок обнаружения установленных провайдеров зависит от реализации. Если провайдер создан и его метод getScheme возвращает ту же схему URI, что и ранее созданный провайдер, то наиболее поздно созданный дубликат отбрасывается. При сравнении схем URI регистр не учитывается. Во время создания провайдер может безопасно обращаться к файлам, связанным с провайдером по умолчанию, однако необходимо соблюдать осторожность, чтобы избежать циклической загрузки других установленных провайдеров. При обнаружении циклической загрузки установленных провайдеров возникает ошибка неопределённого типа.

Этот класс также определяет фабричные методы, позволяющие указать ClassLoader при поиске провайдера. Как и в случае с установленными провайдерами, классы провайдеров идентифицируются размещением файла конфигурации провайдера в каталоге ресурсов META-INF/services.

Если один поток инициирует загрузку установленных провайдеров файловых систем, а другой поток вызывает метод, который также пытается загрузить провайдеры, этот метод будет заблокирован до завершения загрузки.

Версия:
1.7

Краткое описание методов

Модификатор и тип Метод Описание
static FileSystem getDefault()
Возвращает файловую систему FileSystem по умолчанию.
static FileSystem getFileSystem(URI uri)
Возвращает ссылку на существующую FileSystem.
static FileSystem newFileSystem(URI uri, Map<String,?> env)
Создаёт файловую систему, идентифицируемую URI
static FileSystem newFileSystem(URI uri, Map<String,?> env, ClassLoader loader)
Создаёт файловую систему, идентифицируемую URI
static FileSystem newFileSystem(Path path)
Создаёт новую FileSystem для доступа к содержимому файла в качестве файловой системы.
static FileSystem newFileSystem(Path path, ClassLoader loader)
Создаёт новую FileSystem для доступа к содержимому файла в качестве файловой системы.
static FileSystem newFileSystem(Path path, Map<String,?> env)
Создаёт новую FileSystem для доступа к содержимому файла в качестве файловой системы.
static FileSystem newFileSystem(Path path, Map<String,?> env, ClassLoader loader)
Создаёт новую FileSystem для доступа к содержимому файла в качестве файловой системы.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело и будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация устарела и может быть удалена в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени.

Подробное описание методов

getDefault

public static FileSystem getDefault()
Возвращает файловую систему FileSystem по умолчанию. Файловая система по умолчанию создаёт объекты, предоставляющие доступ к файловым системам, доступным виртуальной машине Java. Рабочим каталогом файловой системы является текущий пользовательский каталог, заданный системным свойством user.dir. Это обеспечивает совместимость с классом java.io.File.

При первом вызове любого из методов, определённых этим классом, обнаруживается объект провайдера provider по умолчанию. Если системное свойство java.nio.file.spi.DefaultFileSystemProvider не задано, провайдером по умолчанию является системный провайдер по умолчанию, вызываемый для создания файловой системы по умолчанию.

Если системное свойство java.nio.file.spi.DefaultFileSystemProvider задано, оно рассматривается как список из одного или нескольких полных имён конкретных классов провайдеров, идентифицируемых схемой URI "file". Если список содержит несколько имён, они разделяются запятыми. Каждый класс провайдера является классом public с конструктором public, имеющим один формальный параметр типа FileSystemProvider. Если класс провайдера находится в именованном модуле, этот модуль экспортирует пакет, содержащий класс провайдера, как минимум в java.base. Каждый класс провайдера загружается с помощью системного загрузчика классов по умолчанию и создаётся вызовом конструктора. Провайдеры загружаются и создаются в том порядке, в котором они перечислены в свойстве. Если этот процесс завершается неудачей или схема провайдера не равна "file", возникает ошибка неопределённого типа. Обычно при сравнении схем URI регистр не учитывается, но для провайдера по умолчанию схема должна быть "file". Первый класс провайдера создаётся с передачей ему ссылки на системный провайдер по умолчанию. Второй класс провайдера создаётся с передачей ему ссылки на первый экземпляр провайдера. Третий класс провайдера создаётся с передачей ему ссылки на второй экземпляр и так далее. Последний созданный провайдер становится провайдером по умолчанию; его метод getFileSystem вызывается с URI "file:///" для получения ссылки на файловую систему по умолчанию.

При последующих вызовах этого метода возвращается файловая система, возвращённая при первом вызове.

Возвращает:
файловую систему по умолчанию

getFileSystem

public static FileSystem getFileSystem(URI uri)
Возвращает ссылку на существующую FileSystem.

Этот метод перебирает провайдеры installed, чтобы найти провайдер, идентифицируемый scheme URI заданного URI. При сравнении схем URI регистр не учитывается. Точная форма URI во многом зависит от провайдера. Если провайдер найден, вызывается его метод getFileSystem, чтобы получить ссылку на FileSystem.

После closed файловой системы, созданной этим провайдером, поведение этого метода зависит от провайдера: он может вернуть ссылку на закрытую файловую систему или выбросить исключение FileSystemNotFoundException. Если провайдер позволяет создать новую файловую систему с тем же URI, что и у созданной ранее, этот метод выбрасывает исключение при вызове после закрытия файловой системы и до создания нового экземпляра методом newFileSystem.

Параметры:
uri — URI для поиска файловой системы
Возвращает:
ссылку на файловую систему
Выбрасывает:
IllegalArgumentException — если не выполнены предварительные условия для параметра uri
FileSystemNotFoundException — если файловая система, идентифицируемая URI, не существует
ProviderNotFoundException — если провайдер, поддерживающий схему URI, не установлен

newFileSystem

public static FileSystem newFileSystem(URI uri, Map<String,?> env) throws IOException
Создаёт файловую систему, идентифицируемую URI

Этот метод перебирает провайдеры installed, чтобы найти провайдер, идентифицируемый scheme URI заданного URI. При сравнении схем URI регистр не учитывается. Точная форма URI во многом зависит от провайдера. Если провайдер найден, вызывается его метод newFileSystem(URI,Map) для создания новой файловой системы.

После closed файловой системы возможность создания провайдером новой файловой системы с тем же URI, что и у созданной им ранее, зависит от провайдера.

Пример использования: Предположим, что установлен провайдер, идентифицируемый схемой "memory":

    FileSystem fs = FileSystems.newFileSystem(URI.create("memory:///?name=logfs"),
                                              Map.of("capacity", "16G", "blockSize", "4k"));
Параметры:
uri — URI, идентифицирующий файловую систему
env — карта свойств, специфичных для провайдера, для настройки файловой системы; может быть пустой
Возвращает:
новую файловую систему
Выбрасывает:
IllegalArgumentException — если не выполнены предварительные условия для параметра uri либо параметр env не содержит свойств, требуемых провайдером, содержит недопустимое сочетание свойств и значений или недопустимое значение свойства
FileSystemAlreadyExistsException — если файловая система уже создана
ProviderNotFoundException — если провайдер, поддерживающий схему URI, не установлен
IOException — если при создании файловой системы произошла ошибка ввода-вывода

newFileSystem

public static FileSystem newFileSystem(URI uri, Map<String,?> env, ClassLoader loader) throws IOException
Создаёт файловую систему, идентифицируемую URI

Этот метод сначала пытается найти установленный провайдер точно так же, как метод newFileSystem(URI,Map). Если ни один из установленных провайдеров не поддерживает схему URI, предпринимается попытка найти провайдер с помощью заданного загрузчика классов. Если найден провайдер, поддерживающий схему URI, вызывается его метод newFileSystem(URI,Map) для создания новой файловой системы.

Параметры:
uri — URI, идентифицирующий файловую систему
env — карта свойств, специфичных для провайдера, для настройки файловой системы; может быть пустой
loader — загрузчик классов для поиска провайдера или null, если следует искать только установленный провайдер
Возвращает:
новую файловую систему
Выбрасывает:
IllegalArgumentException — если не выполнены предварительные условия для параметра uri либо параметр env не содержит свойств, требуемых провайдером, содержит недопустимое сочетание свойств и значений или недопустимое значение свойства
FileSystemAlreadyExistsException — если схема URI идентифицирует установленный провайдер, а файловая система уже создана
ProviderNotFoundException — если провайдер, поддерживающий схему URI, не найден
ServiceConfigurationError — если при загрузке поставщика служб произошла ошибка
IOException — если при создании файловой системы произошла ошибка ввода-вывода

newFileSystem

public static FileSystem newFileSystem(Path path, ClassLoader loader) throws IOException
Создаёт новую FileSystem для доступа к содержимому файла в качестве файловой системы.

Этот метод использует специализированные провайдеры, создающие псевдофайловые системы, в которых содержимое одного или нескольких файлов рассматривается как файловая система.

Этот метод сначала пытается найти установленный провайдер точно так же, как метод newFileSystem(Path, Map, ClassLoader), передавая пустую карту. Если ни один из установленных провайдеров не возвращает FileSystem, предпринимается попытка найти провайдер с помощью заданного загрузчика классов. Если провайдер возвращает файловую систему, поиск завершается и файловая система возвращается.

Параметры:
path — путь к файлу
loader — загрузчик классов для поиска провайдера или null, если следует искать только установленный провайдер
Возвращает:
новую файловую систему
Выбрасывает:
ProviderNotFoundException — если не удалось найти провайдера, поддерживающего этот тип файла
ServiceConfigurationError — если при загрузке поставщика служб произошла ошибка
IOException — если произошла ошибка ввода-вывода

newFileSystem

public static FileSystem newFileSystem(Path path, Map<String,?> env) throws IOException
Создаёт новую FileSystem для доступа к содержимому файла в качестве файловой системы.

Этот метод использует специализированные провайдеры, создающие псевдофайловые системы, в которых содержимое одного или нескольких файлов рассматривается как файловая система.

Этот метод сначала пытается найти установленный провайдер точно так же, как метод newFileSystem(Path, Map, ClassLoader). Если провайдер найден, вызывается его метод newFileSystem(Path, Map) для создания новой файловой системы.

Параметры:
path — путь к файлу
env — карта свойств, специфичных для провайдера, для настройки файловой системы; может быть пустой
Возвращает:
новую файловую систему
Выбрасывает:
IllegalArgumentException — если параметр env не содержит свойств, требуемых провайдером, содержит недопустимое сочетание свойств и значений или недопустимое значение свойства
ProviderNotFoundException — если не удалось найти провайдера, поддерживающего этот тип файла
ServiceConfigurationError — если при загрузке поставщика служб произошла ошибка
IOException — если произошла ошибка ввода-вывода
Версия:
13

newFileSystem

public static FileSystem newFileSystem(Path path) throws IOException
Создаёт новую FileSystem для доступа к содержимому файла в качестве файловой системы.

Этот метод использует специализированные провайдеры, создающие псевдофайловые системы, в которых содержимое одного или нескольких файлов рассматривается как файловая система.

Этот метод сначала пытается найти установленный провайдер точно так же, как метод newFileSystem(Path, Map, ClassLoader). Если провайдер найден, для создания новой файловой системы вызывается его метод newFileSystem(Path, Map) с пустой картой.

Параметры:
path — путь к файлу
Возвращает:
новую файловую систему
Выбрасывает:
ProviderNotFoundException — если не удалось найти провайдера, поддерживающего этот тип файла
ServiceConfigurationError — если при загрузке поставщика служб произошла ошибка
IOException — если произошла ошибка ввода-вывода
Версия:
13

newFileSystem

public static FileSystem newFileSystem(Path path, Map<String,?> env, ClassLoader loader) throws IOException
Создаёт новую FileSystem для доступа к содержимому файла в качестве файловой системы.

Этот метод использует специализированные провайдеры, создающие псевдофайловые системы, в которых содержимое одного или нескольких файлов рассматривается как файловая система.

Этот метод перебирает провайдеры installed. Он поочерёдно вызывает метод newFileSystem(Path,Map) каждого провайдера. Если провайдер возвращает файловую систему, перебор завершается и эта файловая система возвращается. Если ни один из установленных провайдеров не возвращает FileSystem, предпринимается попытка найти провайдер с помощью заданного загрузчика классов. Если провайдер возвращает файловую систему, поиск завершается и файловая система возвращается.

Параметры:
path — путь к файлу
env — карта свойств, специфичных для провайдера, для настройки файловой системы; может быть пустой
loader — загрузчик классов для поиска провайдера или null, если следует искать только установленный провайдер
Возвращает:
новую файловую систему
Выбрасывает:
IllegalArgumentException — если параметр env не содержит свойств, требуемых провайдером, содержит недопустимое сочетание свойств и значений или недопустимое значение свойства
ProviderNotFoundException — если не удалось найти провайдера, поддерживающего этот тип файла
ServiceConfigurationError — если при загрузке поставщика служб произошла ошибка
IOException — если произошла ошибка ввода-вывода
Версия:
13

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, 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.

Spec-Zone.ru

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