Модуль jdk.zipfs
Доступ к файловой системе ZIP
Методы статической фабрики FileSystemsnewFileSystem могут быть использованы для: - Создание файловой системы ZIP
- Открытие существующего файла как файловой системы ZIP
Схему URI для идентификации файловой системы ZIP
URIscheme, идентифицирующий файловую систему ZIP, это jar. Атрибуты файлов POSIX
Файловая система ZIP поддерживает атрибут файлаview с именем "zip", который определяет следующий атрибут файла: Атрибут "разрешения" — это набор разрешений доступа, которые необязательно хранятся для записей в файле ZIP. Значение атрибута равно
Имя Тип разрешения Set<PosixFilePermission>
null для записей, не имеющих разрешений доступа. Файловые системы ZIP не применяют разрешения доступа. Атрибут "разрешения" можно читать и устанавливать с помощью методов 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);
Услуги
| Тип | Описание |
|---|---|
| FileSystemProvider | Класс-поставщик услуг для файловых систем. |
© 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://download.java.net/java/early_access/jdk24/docs/api/jdk.zipfs/module-summary.html