Java ZipEntry类中的getExtraMethod()返回null,其中as getName()方法正确返回文件名 ZipInputStream zis=newzipinputstream(newbytearrayinputstream(byte[])//输入为字节[] ZipEntry ze=zis.getNextEntry(); while(ze!=null){ 字符串文件名=ze.getName(); 字符串扩展名=fileName.substring(fileName.indexOf(“.”),fileName.length(); if(“.xml.equalsIgnoreCase(扩展名)){ Document oldSdoDocument=builder.parse(新的ByteArrayInputStream(ze.getExtra()); //比较xml内容 } }

Java ZipEntry类中的getExtraMethod()返回null,其中as getName()方法正确返回文件名 ZipInputStream zis=newzipinputstream(newbytearrayinputstream(byte[])//输入为字节[] ZipEntry ze=zis.getNextEntry(); while(ze!=null){ 字符串文件名=ze.getName(); 字符串扩展名=fileName.substring(fileName.indexOf(“.”),fileName.length(); if(“.xml.equalsIgnoreCase(扩展名)){ Document oldSdoDocument=builder.parse(新的ByteArrayInputStream(ze.getExtra()); //比较xml内容 } },java,zipfile,Java,Zipfile,该方法不检索zip文件中的文件内容,而是返回zip条目中额外字段的值。问题是: .ZIP文件格式在文件头中包含一个额外的字段功能,可用于存储现有ZIP规范未定义的额外数据,并允许不识别字段的符合要求的存档者安全跳过这些字段。标头ID 0–31保留供PKWARE使用。其余的ID可由第三方供应商用于专有用途 看起来您只是想读取ZIP中的XML文件并对其进行解析,因此,不要使用额外的字段,而是从ZIP输入流本身读取数据: ZipInputStream zis = new ZipInputStream(

该方法不检索zip文件中的文件内容,而是返回zip条目中额外字段的值。问题是:

.ZIP文件格式在文件头中包含一个额外的字段功能,可用于存储现有ZIP规范未定义的额外数据,并允许不识别字段的符合要求的存档者安全跳过这些字段。标头ID 0–31保留供PKWARE使用。其余的ID可由第三方供应商用于专有用途

看起来您只是想读取ZIP中的XML文件并对其进行解析,因此,不要使用额外的字段,而是从ZIP输入流本身读取数据:

ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(byte[])); //input is byte []

ZipEntry ze = zis.getNextEntry();
while (ze != null) {
    String fileName = ze.getName();

    String extension = fileName.substring(fileName.indexOf("."), fileName.length());
    if (".xml".equalsIgnoreCase(extension)) {
         Document oldSdoDocument = builder.parse(zis);
         //compare xml content
    }
    ze = zis.getNextEntry();
}

当我尝试使用ZipInputStream和ZipEntry.getExtra()从字节[]获取文件内容时,我没有获取文件内容。相反,我在临时位置重新创建了zip文件,然后使用ZipFile读取zip文件,对于文件内容,我使用ZipFile.getInputStream(zipEntry)。一旦我有了文件的输入记录,我就可以对它进行任何类型的操作。

你的问题是什么?请阅读欢迎来到StackOverflow。请认真阅读,仔细阅读,以提高问题的质量。返回条目的额外字段数据,如果没有,则返回null。您希望从中获得什么?如果您试图读取zip条目的数据,请从输入流中读取,而不是使用
getExtra()
。在该zip示例.pdf文件中还将包含其他文件。所以我不能直接使用zipInputStream进行解析。尽管我在zip中只有一个xml文件,并且我直接使用zipInputStream进行解析,但我会得到一个异常,比如文件的过早结束。