Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法使用java动态地在zip文件中创建zip。。?_Java_Dynamic_Zip_Compression_Archive - Fatal编程技术网

有没有办法使用java动态地在zip文件中创建zip。。?

有没有办法使用java动态地在zip文件中创建zip。。?,java,dynamic,zip,compression,archive,Java,Dynamic,Zip,Compression,Archive,我有一大堆文件,比如说4个文件。。我想把2个文件压缩成一个压缩文件,比如说“inner.zip” 其余的则转到父目录“outer.zip” 即 内部ZipoutStream应该调用finish()而不是close(),因为finish()会刷新所有压缩数据,但不会关闭外部zip。请注意测试close()的错误性,因为内部zip是最后一个,所以需要添加另一个文件 你为什么要在拉链里面做拉链?为什么不只是一个文件夹? InputStream streamToReadFile=readFile(fi

我有一大堆文件,比如说4个文件。。我想把2个文件压缩成一个压缩文件,比如说“inner.zip” 其余的则转到父目录“outer.zip”


内部ZipoutStream应该调用
finish()
而不是
close()
,因为
finish()
会刷新所有压缩数据,但不会关闭外部zip。请注意测试
close()
的错误性,因为内部zip是最后一个,所以需要添加另一个文件


你为什么要在拉链里面做拉链?为什么不只是一个文件夹?
InputStream streamToReadFile=readFile(filePath);
String zipEntryName = folderName + "/" + fileNameToWrite;
ZipEntry anEntry = new ZipEntry(zipEntryName);

// I couldn't able to create zip in a zip file.

streamToWriteInZip.putNextEntry(anEntry);
while ((bytesIn = streamToReadFile.read(readBuffer)) > 0) {
                    streamToWriteInZip.write(readBuffer, 0, bytesIn);
                }
    Path sourcePath = Paths.get("C:/D/test.html");
    try (ZipOutputStream zipOut = new ZipOutputStream(
            new FileOutputStream("C:/D/test/test.zip"))) {

        zipOut.putNextEntry(new ZipEntry("file1.txt"));
        Files.copy(sourcePath, zipOut);
        zipOut.closeEntry();

        zipOut.putNextEntry(new ZipEntry("file2.txt"));
        Files.copy(sourcePath, zipOut);
        zipOut.closeEntry();

        zipOut.putNextEntry(new ZipEntry("inner.zip"));
        ZipOutputStream innerZipOut = new ZipOutputStream(zipOut);
        {
            innerZipOut.putNextEntry(new ZipEntry("file3.txt"));
            Files.copy(sourcePath, innerZipOut);
            innerZipOut.closeEntry();

            innerZipOut.putNextEntry(new ZipEntry("file4.txt"));
            Files.copy(sourcePath, innerZipOut);
            innerZipOut.closeEntry();

            innerZipOut.finish(); // Instead of close().
        }
        zipOut.closeEntry();

    } catch (IOException e) {
        e.printStackTrace();
    } // Invoke close().