Java 将inputStream从ZipFile转换为字符串
这里,我的web应用程序的主要功能是上载.zip文件并将其存储在服务器端,但在此之前,我需要执行以下任务: 1。).zip文件包含xml文件,我必须首先使用模式验证xml文件。Java 将inputStream从ZipFile转换为字符串,java,string,inputstream,zipfile,Java,String,Inputstream,Zipfile,这里,我的web应用程序的主要功能是上载.zip文件并将其存储在服务器端,但在此之前,我需要执行以下任务: 1。).zip文件包含xml文件,我必须首先使用模式验证xml文件。 2.)如果xml文件有效,则需要将xml文件的内容转换为字符串,而无需解压缩文件(即从inputstream) 我已成功验证xml文件,但在转换inputstream中的字符串时出现以下异常: “java.io.EOFException:ZLIB输入流意外结束” 我已经尝试了Stack Overflow和其他论坛站点提供
2.)如果xml文件有效,则需要将xml文件的内容转换为字符串,而无需解压缩文件(即从inputstream) 我已成功验证xml文件,但在转换inputstream中的字符串时出现以下异常: “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());
}
试试看
{
ZipFile zipFileUtil=新ZipFile(ZipFile);
枚举您不能读取流“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();
您还可以重置streamAWESOME…。它工作了,谢谢@Lotfi。因此,结论是我需要非常努力地改进我的核心概念…:)谢谢again@kromit:我不确定ZipInputStream是否支持重置。如果支持,则重置它是正确的方法:)@Lotfi:it-does->FilterInputStream“在不解压缩文件的情况下将xml文件的内容转换为字符串”没有意义。在解压缩输入之前,没有xml文件。请重试。