モジュールjdk.zipfs
Zipファイル・システムへのアクセス
FileSystemsnewFileSystem
static factoryメソッドは、次の場合に使用できます:
- Zipファイルシステムの作成
- 既存のファイルをZipファイル・システムとして開く
Zipファイル・システムの識別に使用されるURIスキーム
ZIPファイル・システムを識別するURIscheme
はjar
です。
POSIXファイルの属性
Zipファイル・システムは、次のファイル属性を定義する、view
、"zip
"という名前のファイル属性をサポートしています:
"permissions"属性は、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
"表示は、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ファイル・システムの作成時には、次のプロパティを指定できます:プロパティ名 | データ型 | デフォルト値 | 説明 |
---|---|---|---|
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);
-
サービス