Класс 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 |
Возвращает ссылку на существующую 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 для доступа к содержимому файла в качестве файловой системы. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект другому объекту. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода 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
© 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.