Модуль jdk.zipfs
Доступ к файловой системе Zip
Методы статического фабричного класса FileSystemsnewFileSystem могут использоваться для: - Создание файловой системы Zip
- Открытие существующего файла как файловой системы Zip
Схема URI, используемая для идентификации файловой системы Zip
URIscheme, идентифицирующий файловую систему ZIP, равен jar. Атрибуты файла POSIX
Файловая система Zip поддерживает атрибут файлаview с именем "zip", который определяет следующие атрибуты файла: Атрибут "permissions" представляет собой набор разрешений доступа, которые могут храниться для записей в файле Zip. Значение атрибута равно
Имя Тип permissions Set<PosixFilePermission>
null для записей, не имеющих разрешений доступа. Файловые системы Zip не накладывают ограничений по разрешениям доступа. Атрибут "permissions" может быть прочитан и изменён с помощью методов Files.getAttribute и Files.setAttribute. Следующий пример использует эти методы для чтения и изменения атрибута:
Set<PosixFilePermission> perms = Files.getAttribute(entry, "zip:permissions");
if (perms == null) {
perms = PosixFilePermissions.fromString("rw-rw-rw-");
Files.setAttribute(entry, "zip:permissions", perms);
}
Помимо представления "zip", файловая система Zip необязательно поддерживает представление PosixFileAttributeView ("posix"). Это представление расширяет представление "basic", обеспечивая безопасный по типу доступ к атрибутам owner, group-owner и permissions. Представление "posix" поддерживается только тогда, когда файловая система Zip создана с свойством поставщика "enablePosixFileAttributes", установленным в "true". Следующий пример создаёт файловую систему с этим свойством и считывает разрешения доступа к файлу:
var env = Map.of("enablePosixFileAttributes", "true");
try (FileSystem fs = FileSystems.newFileSystem(file, env) {
Path entry = fs.getPath("entry");
Set<PosixFilePermission> perms = Files.getPosixFilePermissions(entry);
}
Атрибуты владельца файла и владельца группы не сохраняются, то есть не хранятся в файле zip. Свойства поставщика "defaultOwner" и "defaultGroup" (перечисленные ниже) могут использоваться для настройки значений по умолчанию для этих атрибутов. Если эти свойства не установлены, владелец файла по умолчанию — владелец файла zip, а владелец группы — владелец группы файла zip (или владелец файла на платформах, не поддерживающих владельца группы).
Атрибут "permissions" не является необязательным в представлении "posix", поэтому для записей, не имеющих разрешений доступа, хранящихся в файле Zip, используется набор разрешений по умолчанию. Набор разрешений по умолчанию состоит из:
defaultPermissions", описанного ниже. Свойства файловой системы Zip
При создании файловой системы Zip могут быть указаны следующие свойства:| Имя свойства | Тип данных | Значение по умолчанию | Описание |
|---|---|---|---|
| create |
String или Boolean
| false | Если значение равно true, поставщик файловой системы Zip создаёт новый файл Zip или JAR, если он не существует. |
| encoding | String | UTF-8 | Значение указывает схему кодирования для имён записей в файле Zip или JAR. |
| enablePosixFileAttributes |
String или Boolean
| false | Если значение равно true, файловая система Zip будет поддерживать PosixFileAttributeView. |
| defaultOwner |
UserPrincipalили String
| null/unset | Переопределяет владельца по умолчанию для записей в файловой системе Zip. Значение может быть объектом UserPrincipal или строковым значением, используемым в качестве имени UserPrincipal. |
| defaultGroup |
GroupPrincipalили String
| null/unset | Переопределяет группу по умолчанию для записей в файловой системе Zip. Значение может быть объектом GroupPrincipal или строковым значением, используемым в качестве имени GroupPrincipal. |
| defaultPermissions |
Set<PosixFilePermission>или String
| null/unset | Переопределяет набор разрешений по умолчанию для записей в файловой системе Zip. Значение может быть объектом Set<PosixFilePermission> илистрокой, интерпретируемой методом PosixFilePermissions::fromString |
| compressionMethod | String | "DEFLATED" | Значение, представляющее метод сжатия, используемый при записи записей в файловую систему Zip.
|
| releaseVersion |
String или Integer
| null/unset | Значение, представляющее используемую версию записи для доступа к многоверсионным JAR-файлам. Если JAR-файл не является многоверсионным JAR-файлом, значение будет проигнорировано, и JAR-файл будет считаться неверсионным. Значение должно быть либо строкой "runtime", либо представлять допустимое значение номера версии платформы Java SE, например
|
Примеры:
Создайте новую файловую систему Zip, идентифицируемую URI. Если файла Zip не существует, он будет создан:
URI uri = URI.create("jar:file:/home/luckydog/tennisTeam.zip");
Map<String, String> env = Map.of("create", "true");
FileSystem zipfs = FileSystems.newFileSystem(uri, env);
Создайте новую файловую систему Zip, указав путь и используя автоматическое определение типа файла. Переберите записи из корня JAR, отображая каждую найденную запись:
FileSystem zipfs = FileSystems.newFileSystem(Path.of("helloworld.jar"));
Path rootDir = zipfs.getPath("/");
Files.walk(rootDir)
.forEach(System.out::println);
- Граф модулей:
- С момента:
- 9
Услуги
| Тип | Описание |
|---|---|
| FileSystemProvider |
© 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/jdk.zipfs/module-summary.html