gpt4 book ai didi

java - 将 inputStream 从 ZipFile 转换为 String

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:57:23 25 4
gpt4 key购买 nike

我的 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());
}

最佳答案

你不能读取流“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();

关于java - 将 inputStream 从 ZipFile 转换为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10715404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com