1

我有以下 WebDriver Java 代码用于将文件夹/目录压缩为 .zip :

import java.io.File;
import java.io.IOException;
import org.openqa.selenium.io.Zip;

public class ZipDir {
    public static void main(String... args){
        Zip zip = new Zip();
        try {
            zip.zip(new File("D:\\TmpFS"), new File("D:\\TmpFS.zip"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上面的代码成功在D盘创建了一个“TmpFS.zip”,不幸的是出现了如下异常:

java.util.zip.ZipException: ZIP file must have at least one entry
at java.util.zip.ZipOutputStream.finish(Unknown Source)
at java.util.zip.DeflaterOutputStream.close(Unknown Source)
at java.util.zip.ZipOutputStream.close(Unknown Source)
at com.google.common.io.Closeables.close(Closeables.java:77)
at org.openqa.selenium.io.Zip.zip(Zip.java:90)
at org.openqa.selenium.io.Zip.zip(Zip.java:51)
at packt.selenium.test.chapter6.ZipDir.main(ZipDir.java:11)

良好的帮助是可观的。

4

1 回答 1

1

查看Selenuim 的 Zip的来源,似乎它没有将任何目录条目添加到 zip 文件中。它只是添加文件条目。

例如,如果您具有以下目录结构:

D:\\TmpFS\\Dir1\\file1.txt
D:\\TmpFS\\EmptyDir\\     
D:\\TmpFS\\1.txt

它只会添加\\Dir1\\file1.txt1.txtzip 文件中,EmptyDir不会添加到 zip 文件中。因此,即使您有多个文件夹但它们都没有任何文件,因为 Zip 类的代码没有添加任何文件夹,输出的 zip 文件也不会有任何条目,因此 java.util.zip.ZipOutputStream 会抛出一个关闭 zip 文件时出错。因此,您应该在任何目录/子目录中至少有一个文件才能获得有效的 zip 文件。

于 2013-10-04T13:14:34.080 回答