Spec-Zone.ru › OpenJDK 25

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

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

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

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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/nio/file/FileSystems.html

Spec-Zone.ru

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