Zip ファイルシステムプロバイダ

はじめに

Java SE 7 リリースで導入された Zip ファイルシステムプロバイダは、カスタムファイルシステムプロバイダの実装です。Zip ファイルシステムプロバイダは、Zip または JAR ファイルを 1 つのファイルシステムとして扱い、そのファイルの内容を操作する機能を提供します。Zip ファイルシステムプロバイダは、複数のファイルシステム (Zip または JAR ファイルごとに 1 つのファイルシステム) を作成します。

Java SE 7 インストール内の demo/nio/zipfs/src.zip ファイルには、Zip ファイルシステムプロバイダのソースコードが含まれています。また、Zip ファイルシステムプロバイダの使用方法を示す Demo.java クラスも含まれています。

Zip ファイルシステムプロバイダの使用

java.nio.file.FileSystems クラスのファクトリメソッドを使用して、新しい Zip ファイルシステムを作成したり、既存の Zip ファイルシステムへの参照を取得したりできます。Zip ファイルシステムを作成するには、次のいずれかの方法で Zip または JAR ファイルのパスを指定します。

FileSystems.newFileSystem メソッドに渡される java.util.Map オブジェクトに、Zip ファイルシステムの構成オプションを指定します。Zip ファイルシステムのプロバイダ固有の構成プロパティーについては、「Zip ファイルシステムのプロパティー」を参照してください。

Zip ファイルシステムのインスタンスを作成したあとは、java.nio.file.FileSystem および java.nio.file.Path クラスのメソッドを呼び出して、ファイルのコピー、移動、名前変更や、ファイル属性の変更などの操作を実行できます。

次のコード例は、Zip ファイルシステムを作成し、その新しい Zip ファイルシステムにファイルをコピーする方法を示しています。

import java.util.*;
import java.net.URI;
import java.nio.file.Path;
import java.nio.file.*;

public class ZipFSPUser {
    public static void main(String [] args) throws Throwable {
        Map<String, String> env = new HashMap<>(); 
        env.put("create", "true");
        // locate file system by using the syntax 
        // defined in java.net.JarURLConnection
        URI uri = URI.create("jar:file:/codeSamples/zipfs/zipfstest.zip");
        
       try (FileSystem zipfs = FileSystems.newFileSystem(uri, env)) {
            Path externalTxtFile = Paths.get("/codeSamples/zipfs/SomeTextFile.txt");
            Path pathInZipfile = zipfs.getPath("/SomeTextFile.txt");          
            // copy a file into the zip file
            Files.copy( externalTxtFile,pathInZipfile, 
                    StandardCopyOption.REPLACE_EXISTING ); 
        } 
    }
}

リソース


Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.