尝试在java中创建ZipFile时获取java.util.zip.ZipException?

尝试在java中创建ZipFile时获取java.util.zip.ZipException?,java,zip,zipfile,Java,Zip,Zipfile,我得到这个错误: java.util.zip.ZipException: invalid CEN header (bad signature) 我不太确定问题出在哪里,当我在谷歌搜索CEN标题时,没有找到任何有用的东西 谢谢你的帮助 以下是代码,在最后一行失败: ZipFile resourceZip = null; if (pir.getSource().endsWith("Resources.zip")) { File temp = new File( "C:\\Users\\n

我得到这个错误:

java.util.zip.ZipException: invalid CEN header (bad signature)
我不太确定问题出在哪里,当我在谷歌搜索
CEN
标题时,没有找到任何有用的东西

谢谢你的帮助

以下是代码,在最后一行失败:

ZipFile resourceZip = null;
if (pir.getSource().endsWith("Resources.zip")) 
{
    File temp = new File( "C:\\Users\\nbonnet\\Desktop\\new\\Resources1.zip");
    byte[] bytesFromClob = ClobHelper.bytesFromClob(pir.getContents(),"latin1");
    FileOutputStream out = new FileOutputStream(temp);
    out.write(bytesFromClob);
    out.flush();
    out.close();
    resourceZip = new ZipFile(temp);  // <-- Code fails here
}
ZipFile resourceZip=null;
if(pir.getSource().endsWith(“Resources.zip”))
{
File temp=新文件(“C:\\Users\\nbonnet\\Desktop\\new\\Resources1.zip”);
byte[]bytesFromClob=ClobHelper.bytesFromClob(pir.getContents(),“latin1”);
FileOutputStream out=新的FileOutputStream(临时);
out.write(bytesFromClob);
out.flush();
out.close();

resourceZip=new ZipFile(temp);//您正在将该文件作为常规(非ZIP)文件写入,然后尝试将其作为ZIP文件读回。这是行不通的。您需要使用
ZipOutputStream
来编写它


签出或。

您正在将该文件作为常规(非ZIP)文件写入,然后尝试将其作为ZIP文件读回。这是行不通的。您需要使用
ZipOutputStream
来编写它


签出或。

您正在运行的代码是什么?您是否看到此页面,其中说明错误可能是由包含大于4GB条目的zip文件引起的。此外,此页面还表明JDK不支持用于创建zip的压缩方法。我添加了正在运行的代码。而且,我100%确定该文件不受支持不到4GB。就压缩而言……有解决办法吗?我能告诉它做一些其他压缩吗?为什么要将二进制数据存储在CLOB中?我建议您将从数据库读取的数据与放入数据库的数据进行比较。我敢打赌它们是不同的。您正在运行的代码是什么?您使用了吗e此页面说明错误可能是由包含大于4GB条目的zip文件引起的。此外,此页面还建议JDK不支持用于创建zip的压缩方法。我添加了我正在运行的代码。此外,我100%确定该文件小于4GB。就压缩而言……是否有解决方法und?我能告诉它做一些其他的压缩吗?你为什么要在CLOB中存储二进制数据?我建议你将从数据库中读取的数据与放入其中的数据进行比较。我敢打赌它们是不同的。对。上面的代码中没有创建zip文件的内容。我已经尝试过了,但我得到了这个错误:java.util.zip.ZipException:没有当前的zip条目,但我将其写入zip的全部原因是因为我需要查看条目。我相信它会抛出此项,因为我没有使用out.putNextEntry()..@Keith-这是一种解释。另一种解释是数据库中的数据是ZIP格式的。当然,正如我在评论中指出的,奇怪的是数据来自CLOB而不是BLOB。@kdgregory:是的,这是另一种可能性。如果是这样,文件的头不知何故损坏了(字符集转换?)。可能是字符集转换,也可能是CLOB拒绝了任何0字节。我想我给了OP足够的提示…我怀疑会出现更糟糕的问题。对。上面的代码中没有任何东西会创建zip文件。我尝试过,但后来我得到了以下错误:java.util.zip.ZipException:没有当前的zip条目,但是我把它写到zip的原因是因为我需要查看条目。我相信它会抛出这个,因为我没有使用out.putNextEntry()..@Keith-这是一种解释。另一种解释是数据库中的数据是ZIP格式的。当然,正如我在评论中指出的,奇怪的是数据来自CLOB而不是BLOB。@kdgregory:是的,这是另一种可能性。如果是这样,文件的头不知何故损坏了(字符集转换?)。可能是字符集转换,也可能是CLOB拒绝任何0字节。我想我给了OP足够的提示…我怀疑还会出现更糟糕的问题。