Класс 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 |
Возвращает ссылку на существующую FileSystem. |
static FileSystem |
newFileSystem |
Создаёт новую файловую систему, идентифицируемую URI
|
static FileSystem |
newFileSystem |
Создаёт новую файловую систему, идентифицируемую URI
|
static FileSystem |
newFileSystem |
Создаёт новую FileSystem для доступа к содержимому файла как к файловой системе. |
static FileSystem |
newFileSystem |
Создаёт новую FileSystem для доступа к содержимому файла как к файловой системе. |
static FileSystem |
newFileSystem |
Создаёт новую FileSystem для доступа к содержимому файла как к файловой системе. |
static FileSystem |
newFileSystem |
Создаёт новую FileSystem для доступа к содержимому файла как к файловой системе. |
Подробное описание методов
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":
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 Этот метод сначала пытается найти установленного поставщика точно так же, как метод 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 для доступа к содержимому файла как к файловой системе. Этот метод использует специализированных поставщиков, которые создают псевдофайловые системы, где содержимое одного или нескольких файлов обрабатывается как файловая система.
Этот метод сначала пытается найти установленного поставщика аналогично методу newFileSystem(Path, Map, ClassLoader) с пустой картой. Если ни один из установленных поставщиков не возвращает FileSystem, то делается попытка найти поставщика с помощью заданного загрузчика классов. Если поставщик возвращает файловую систему, то поиск завершается, и файловая система возвращается.
- Параметры:
-
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, 2021, 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/17/docs/api/java.base/java/nio/file/FileSystems.html