モジュールjdk.zipfs


モジュールjdk.zipfs
Zipファイル・システム・プロバイダの実装を提供します。 Zipファイル・システム・プロバイダでは、ZipファイルまたはJARファイルの内容はファイル・システムとして扱われます。

Zipファイル・システムへのアクセス

FileSystems newFileSystem static factoryメソッドは、次の場合に使用できます:
  • Zipファイルシステムの作成
  • 既存のファイルをZipファイル・システムとして開く
Zipファイル・システム・プロバイダは、名前要素に"."または".."を含むエントリを含む既存のZipファイルを開くことをサポートしていません。

Zipファイル・システムの識別に使用されるURIスキーム

ZIPファイル・システムを識別するURI schemejarです。

POSIXファイルの属性

Zipファイル・システムは、次のファイル属性を定義する、view、"zip"という名前のファイル属性をサポートしています:
サポートされる属性
名前
権限 Set<PosixFilePermission>
"permissions"属性は、Zipファイルのエントリ用にオプションで保存されるアクセス権のセットです。 属性の値は、アクセス権限のないエントリのnullです。 Zipファイルシステムでは、アクセス権限は強制されません。

「Files.get属性」および「Files.set属性」メソッドを使用して、"permissions"属性の読取りおよび設定が可能です。 次の例では、これらのメソッドを使用して属性の読取りおよび設定を行います:

 
     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")がサポートされます。 このビューでは、ownergroup-ownerおよびpermissions属性への安全なアクセスのタイプを含む"basic"ビューを拡張します。 "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ファイル・グループ所有者の(またはグループ所有者をサポートしていないプラットフォームのファイル所有者)に設定されます。

"posix"ビューでは"permissions"属性はオプションではないため、Zipファイルに保存されているアクセス権限がないエントリにはデフォルトの権限セットが使用されます。 デフォルトの権限セットは次のとおりです

デフォルト権限は、次に示す"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またはString値を指定できます。
defaultGroup GroupPrincipal
またはString
null/unset Zipファイル・システムのエントリのデフォルト・グループをオーバーライドします。
値として、GroupPrincipal名として使用されるGroupPrincipalまたはString値を指定できます。
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はバージョニングされていないとみなされます。

バージョン・エントリを決定するには、値は文字列"ランタイム"であるか、または914などの有効な「Java SE Platformのバージョン番号」を表す必要があります。

  • 値がnullであるか、プロパティが設定されていない場合、JARはバージョニングされていないJARとして扱われます。
  • 値が"runtime"の場合、バージョン・エントリはRuntime.Version.feature()の起動によって決定されます。
  • 値が有効な「Java SE Platformのバージョン番号」を表していない場合は、IllegalArgumentExceptionがスローされます。

例:

URIで識別される新しいZipファイル・システムを作成します。 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);
 
 
モジュール・グラフ:
jdk.zipfsのモジュール・グラフjdk.zipfsのモジュール・グラフ
導入されたバージョン:
9