Модуль 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 можно указать следующие свойства:| Имя свойства | Тип данных | Значение по умолчанию | Описание |
|---|---|---|---|
| accessMode | String | null/unset | Значение, определяющее требуемый режим доступа к файловой системе. Файловые системы ZIP можно создавать с доступом для чтения и записи или только для чтения.
accessMode не влияет на сообщаемые права доступа к файлам POSIX (если поддержка POSIX включена). |
| create |
String или Boolean
| false | Если значение равно true, поставщик файловой системы ZIP создает новый файл ZIP или JAR, если он не существует. Если свойству create присвоить значение true, а свойству accessMode — значение "readOnly", при создании файловой системы ZIP будет выброшено исключение IllegalArgumentException. |
| 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://docs.oracle.com/en/java/javase/25/docs/api/jdk.zipfs/module-summary.html