4

zip アーカイブである一連のファイルを解凍する必要があります。これは zip ファイルのセットではなく、サイズ要件に基づいて複数の zip ファイルに分割された 1 つの大きな zip ファイルです。

たとえば、2.5MB の zip ファイルがあり、メール システムが 1MB のファイルしかサポートしていない場合、最大 1MB のファイルを 3 つ作成するように Zip に指示できます。

したがって、a.zip.001、a.zip.002、a.zip.003 が作成されます。ライブラリごとに名前が異なりますが、基本的にはすべて同じように機能します。

これをJavaでどのように解凍しますか?std の圧縮ライブラリがこれをサポートしているようには見えません。

ありがとう。

4

1 に答える 1

2

すべてのファイルを 1 つのファイルに連結してから、その 1 つのファイルを抽出してみてください。何かのようなもの:

    File dir = new File("D:/arc");
    FileOutputStream fos = new FileOutputStream(new File(
            "d:/arc/archieve-full.zip"));
    FileInputStream fis = null;
        Set<String> files = new TreeSet<String>();
        for (String fname : dir.list()) {
            files.add(fname);
        }
        for (String fname : files) {
        try {
            fis = new FileInputStream(new File(dir.getAbsolutePath(), fname));
            byte[] b = new byte[fis.available()];
            fis.read(b);
            fos.write(b);
        } finally {
            if (fis != null) {
                fis.close();
            }
            fos.flush();
        }
    }
    fos.close();
    ZipFile zipFile = new ZipFile("d:/arc/archieve-full.zip");
    /*extract files from zip*/

更新:アルファベット順を保証しないためTreeSet、ファイル名を並べ替えるために a を使用しました。dir.list()

于 2012-05-24T16:22:23.480 に答える