Класс 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, ClassLoader loader)

Создаёт новую FileSystem для доступа к содержимому файла как к файловой системе.

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

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

Методы

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". Если свойство содержит список более чем одного имени, имена разделяются запятой. Каждый класс загружается с помощью системного загрузчика классов и создаётся путём вызова конструктора с одним аргументом, тип которого — FileSystemProvider. Поставщики загружаются и создаются в порядке их перечисления в свойстве. Если этот процесс завершается ошибкой или схема поставщика не равна "file", генерируется неопределённая ошибка. Схемы URI обычно сравниваются без учёта регистра, но для стандартного поставщика схема должна быть "file". Первый класс поставщика создаётся путём вызова его с ссылкой на системного поставщика по умолчанию. Второй класс поставщика создаётся путём вызова его с ссылкой на первый экземпляр поставщика. Третий класс поставщика создаётся путём вызова его с ссылкой на второй экземпляр, и так далее. Последний созданный поставщик становится стандартным поставщиком; его метод getFileSystem вызывается с URI "file:///" для получения ссылки на стандартную файловую систему.

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

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

getFileSystem

public static FileSystem getFileSystem(URI uri)

Возвращает ссылку на существующую FileSystem.

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

После закрытия файловой системы, созданной этим поставщиком (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

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

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

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

Map<String,String> env = new HashMap<>();
   env.put("capacity", "16G");
   env.put("blockSize", "4k");
   FileSystem fs = FileSystems.newFileSystem(URI.create("memory:///?name=logfs"), env);
Параметры:
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

Этот метод сначала пытается найти установленного поставщика точно так же, как метод 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

Создаёт новую FileSystem для доступа к содержимому файла как к файловой системе.

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

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

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

© 1993, 2020, 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/11/docs/api/java.base/java/nio/file/FileSystems.html

Spec-Zone .ru
спецификации, руководства, описания, API