モジュールjdk.zipfs


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

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

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

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

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

POSIXファイルの属性

ZIPファイル・システムでは、次のファイル属性を定義する"zip"という名前のファイル属性viewがサポートされます:
サポートされる属性
名前
権限 Set<PosixFilePermission>
"権限"属性は、オプションで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"ビューは、プロバイダ・プロパティ"enablePosixFileAttributes"を"true"に設定してZIPファイル・システムを作成した場合にのみサポートされます。 このプロパティを使用してファイル・システムを作成し、ファイルのアクセス権限を読み取ります:

    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ファイル・システムの作成時に指定できる構成可能なプロパティ
プロパティ名 データ型 デフォルト値 説明
accessMode String null/unset ファイル・システムの必要なアクセス・モードを定義する値。 ZIPファイルシステムを作成して、読み取り/書き込みまたは読み取り専用のアクセスを許可できます。
  • 値が設定されていない場合、ファイルシステムは可能であれば read-writeとして作成されます。 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または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のバージョン番号を表す場合、ZIPファイル・システムの作成時に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
  • サービス

    提供
    説明
    ファイル・システムのサービス・プロバイダ・クラスです。