Модуль 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 Platform version number, например,
|
Примеры:
Создайте новую файловую систему 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, 2023, 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/21/docs/api/jdk.zipfs/module-summary.html