Spec-Zone.ru › OpenJDK 17

Модуль jdk.zipfs

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

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

Методы статического фабричного класса FileSystems newFileSystem могут использоваться для:
  • Создание файловой системы Zip
  • Открытие существующего файла как файловой системы Zip

Схема URI, используемая для идентификации файловой системы Zip

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

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

Файловая система Zip поддерживает атрибут файла view с именем "zip", который определяет следующие атрибуты файла:
Поддерживаемые атрибуты
Имя Тип
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 могут быть указаны следующие свойства:
Настраиваемые свойства, которые могут быть указаны при создании новой файловой системы 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.
  • Если значение равно "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-файл будет интерпретироваться как неверсионный JAR-файл.
  • Если значение равно "runtime", запись версии будет определяться путём вызова Runtime.Version.feature().
  • Если значение не представляет допустимое значение номера версии платформы Java SE, будет выброшено исключение 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

© 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

Spec-Zone.ru

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