モジュールjdk.zipfs
ZIPファイル・システムへのアクセス
FileSystemsnewFileSystem
static factoryメソッドは、次の場合に使用できます:
- ZIPファイル・システムの作成
- 既存のファイルをZIPファイルシステムとして開く
ZIPファイル・システムの識別に使用されるURIスキーム
ZIPファイル・システムを識別するURIscheme
はjar
です。
POSIXファイルの属性
ZIPファイル・システムでは、次のファイル属性を定義する"zip
"という名前のファイル属性view
がサポートされます:
"権限"属性は、オプションでZIPファイルのエントリ用に格納されるアクセス権限のセットです。 属性の値は、アクセス権限のないエントリの
名前 型 権限 Set
<PosixFilePermission
>
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
")もサポートされます。 このビューでは、owner
、group-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ファイル・システムの作成時には、次のプロパティを指定できます:プロパティ名 | データ型 | デフォルト値 | 説明 |
---|---|---|---|
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ファイル・システムへのエントリの書込み時に使用する圧縮メソッドを表す値。
|
releaseVersion | String またはInteger |
null/unset |
「マルチ・リリースJAR」へのアクセス時に使用するバージョン・エントリを表す値。 JARが「マルチ・リリースJAR」でない場合、値は無視され、JARはバージョニングされていないとみなされます。
バージョン・エントリを決定するには、値は文字列"ランタイム"であるか、または
|
例:
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);
-
サービス
提供