这里我的Web应用程序的主要功能是上传.zip文件并将其存储在服务器端但在此之前我需要执行以下任务: 1.).zip文件包含xml文件,我必须首先使用模式验证xml文件。 2.)如果xml文件有效,我需要将xml文件的内容转换为字符串而不解压缩文件,即从输入流中解压缩。
我成功验证了xml文件,但是在从输入流转换字符串时遇到以下异常: “java.io.EOFException:ZLIB输入流的意外结束”
我已经尝试了Stack Overflow和其他论坛网站提供的所有解决方案,但我还没有成功。任何帮助将非常感谢:
以下是代码:
try
{
ZipFile zipFileUtil = new ZipFile(zipFile);
Enumeration<? extends ZipEntry> zipFileContents = zipFileUtil.entries();
while(zipFileContents.hasMoreElements())
{
ZipEntry zipEntry = zipFileContents.nextElement();
if(zipEntry.getName().equals("File.xml"))
{
InputStream sourceFile = zipFileUtil.getInputStream(zipEntry);
if(isValidAsPerXSD(sourceFile))
{
//At this line Exception is Generated
String xmlContent = IOUtils.toString(sourceFile);
}
}
}
}
catch(Throwable t)
{
System.out.println("Exception: "+t.getMessage());
}
答案 0 :(得分:3)
您无法两次阅读“sourceFile”流! 应该顺序读取输入流到最后。你必须关闭它并重新打开它。
InputStream sourceFile = zipFileUtil.getInputStream(zipEntry);
if(isValidAsPerXSD(sourceFile))
{
sourceFile.close();
sourceFile = zipFileUtil.getInputStream(zipEntry);
//At this line Exception is Generated
String xmlContent = IOUtils.toString(sourceFile);
}
sourceFile.close();