Spec-Zone.ru › OpenJDK 8

Класс FileSystems

  • java.lang.Object
    • java.nio.file.FileSystems

public final class FileSystems
extends Object

Методы-фабрики для файловых систем. Этот класс определяет метод getDefault для получения стандартной файловой системы и методы-фабрики для создания других типов файловых систем.

Первое обращение к любому из методов, определённых в этом классе, вызывает загрузку стандартного provider. Стандартный провайдер, определяемый схемой URI "file", создаёт FileSystem, который обеспечивает доступ к файловым системам, доступным для виртуальной машины Java. Если процесс загрузки или инициализации стандартного провайдера завершается неудачно, выбрасывается неопределённая ошибка.

Первое обращение к методу installedProviders, через вызов любого из методов newFileSystem этого класса, находит и загружает все установленные провайдеры файловых систем. Установленные провайдеры загружаются с помощью механизма загрузки провайдеров, определённого классом ServiceLoader. Установленные провайдеры загружаются с помощью системного загрузчика классов. Если системный загрузчик классов не найден, используется расширенный загрузчик классов; если расширенный загрузчик классов отсутствует, используется загрузчик Bootstrap. Провайдеры обычно устанавливаются путём размещения в 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(Path path, ClassLoader loader)

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

static FileSystem newFileSystem(URI uri, Map<String,?> env)

Создаёт новую файловую систему, идентифицируемую URI

static FileSystem newFileSystem(URI uri, Map<String,?> env, ClassLoader loader)

Создаёт новую файловую систему, идентифицируемую URI

Методы, унаследованные от класса 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.

Spec-Zone.ru

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