Spec-Zone.ru › OpenJDK 25

Модуль jdk.zipfs

module jdk.zipfs
Предоставляет реализацию поставщика файловой системы ZIP. Поставщик файловой системы ZIP рассматривает содержимое файла ZIP или JAR как файловую систему.

Доступ к файловой системе ZIP

Статические фабричные методы FileSystems newFileSystem можно использовать для следующих целей:
  • Создание файловой системы ZIP
  • Открытие существующего файла в качестве файловой системы ZIP
Поставщик файловой системы ZIP не поддерживает открытие существующего файла ZIP, содержащего записи с элементами имени "." или "..".

Схема URI для идентификации файловой системы ZIP

URI scheme, идентифицирующий файловую систему ZIP, — jar.

Атрибуты файлов POSIX

Файловая система ZIP поддерживает представление атрибутов файла view с именем "zip", которое определяет следующий атрибут файла:
Supported attributes
Имя Тип
permissions Set<PosixFilePermission>
Атрибут "permissions" — это набор прав доступа, которые могут быть сохранены для записей в файле ZIP. Значение атрибута равно 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, используется набор прав доступа по умолчанию. Набор прав доступа по умолчанию:

  • OWNER_READ
  • OWNER_WRITE
  • GROUP_READ
Права доступа по умолчанию можно настроить с помощью описанного ниже свойства "defaultPermissions".

Свойства файловой системы ZIP

При создании файловой системы ZIP можно указать следующие свойства:
Configurable properties that may be specified when creating a new ZIP file system
Имя свойства Тип данных Значение по умолчанию Описание
accessMode String null/unset Значение, определяющее требуемый режим доступа к файловой системе. Файловые системы ZIP можно создавать с доступом для чтения и записи или только для чтения.
  • Если значение не задано, файловая система создается с доступом для чтения и записи, если это возможно. Используйте isReadOnly(), чтобы определить фактический режим доступа.
  • Если значение равно "readOnly", файловая система создается только для чтения, а isReadOnly() всегда возвращает true. Для создания файловой системы только для чтения необходимо, чтобы базовый файл ZIP уже существовал.
  • Если значение равно "readWrite", файловая система создается с доступом для чтения и записи, а isReadOnly() всегда возвращает false. Если файловую систему с доступом для записи создать невозможно, при создании файловой системы ZIP будет выброшено исключение IOException.
  • При любом другом значении при создании файловой системы ZIP будет выброшено исключение IllegalArgumentException.
Свойство 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.
  • Если значение равно "STORED", поставщик файловой системы ZIP не будет сжимать записи при записи в файловую систему ZIP.
  • Если значение равно "DEFLATED" или свойство не задано, поставщик файловой системы ZIP будет сжимать данные при записи записей в файловую систему ZIP.
  • Если значение не равно "STORED" или "DEFLATED", при создании файловой системы ZIP будет выброшено исключение IllegalArgumentException.
releaseVersion String или Integer null/unset Значение, задающее версию записи, используемую при доступе к мульти-релизному JAR-файлу. Если JAR-файл не является мульти-релизным JAR-файлом, значение будет проигнорировано, а JAR-файл будет считаться не имеющим версии.

Чтобы определить запись версии, значение должно быть либо строкой "runtime", либо представлять допустимый номер версии платформы Java SE, например 9 или 14.

  • Если значение равно null или свойство не задано, JAR-файл будет считаться не имеющим версии.
  • Если значение равно "runtime", запись версии будет определена вызовом Runtime.Version.feature().
  • Если значение не представляет допустимый номер версии платформы Java SE, при создании файловой системы ZIP будет выброшено исключение IllegalArgumentException.

Примеры:

Создание файловой системы 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);

Граф модулей:
Module graph for jdk.zipfsModule graph for jdk.zipfs
Начиная с:
9

Службы

Тип Описание
FileSystemProvider
Класс поставщика служб для файловых систем.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, которая содержит более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

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