0

我想从文件夹创建一个 zip 存档并保留(非空)目录的条目。

在下面的代码中,FileInputStreamFileNotFoundException一个目录被传递给AddToZip. 我试图围绕字节的实际写入设置一个条件,但这会使整个存档无效。如何将目录条目添加到存档?

public static void addToZip(File directoryToZip, File file, ZipOutputStream zos) throws FileNotFoundException,
        IOException {

    String zipFilePath = file.getCanonicalPath().substring(directoryToZip.getCanonicalPath().length() + 1,file.getCanonicalPath().length());
    System.out.println("Writing '" + zipFilePath + "' to zip file");
    ZipEntry zipEntry = new ZipEntry(zipFilePath);
    zos.putNextEntry(zipEntry);
    FileInputStream fis = new FileInputStream(file); // Throws a FileNotFoundException when directory
    byte[] bytes = new byte[1024];
    int length;
    while ((length = fis.read(bytes)) >= 0) {
        zos.write(bytes, 0, length);
    }

    zos.closeEntry();
    fis.close();

}
4

2 回答 2

0

我相信你的答案在这个旧帖子中。请检查。

使用 java.util.zip.ZipOutputStream 时 zip 文件中的目录

于 2013-06-27T16:24:03.350 回答
0

我编写了一些实用方法来使用 NIO.2 File API(库是开源的)将文件和目录复制到 Zip 文件:

马文:

<dependency>  
    <groupId>org.softsmithy.lib</groupId>  
    <artifactId>softsmithy-lib-core</artifactId>  
    <version>0.3</version>  
</dependency>

教程:

http://softsmithy.sourceforge.net/lib/current/docs/tutorial/nio-file/index.html#AddZipResourceSample

API:CopyFileVisitor.copy

于 2013-06-27T16:25:34.667 回答