Spec-Zone.ru › OpenJDK 21

Класс 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.

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

Since:
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 для доступа к содержимому файла как к файловой системе.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы

getDefault

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

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

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

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

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

getFileSystem

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

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

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

Если установлен менеджер безопасности, то реализация провайдера может потребовать проверки разрешения перед возвращением ссылки на существующую файловую систему. В случае файловой системы default проверка разрешения не требуется.

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

newFileSystem

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

Этот метод перебирает installed провайдеров, чтобы найти провайдера, определяемого схемой URI scheme заданного 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 - если при создании файловой системы произошла ошибка ввода-вывода
SecurityException - если установлен менеджер безопасности и он запретил неопределённое разрешение, необходимое реализации провайдера файловой системы

newFileSystem

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

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

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

newFileSystem

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

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

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

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

newFileSystem

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

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

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

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

newFileSystem

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

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

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

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

newFileSystem

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

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

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

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

© 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.base/java/nio/file/FileSystems.html

Spec-Zone.ru

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