Класс 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 для доступа к содержимому файла как к файловой системе. |
Подробное описание методов
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
© 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