Here the main functionality of my web application is to upload .zip file and store it at the server side but before doing that I need to do some following task:
1.) .zip file contains the xml file, I have to first validate the xml file using schema.
2.) if the xml file is valid than I need to convert the content of the xml file into string without unzipping the file i.e. from the inputstream.
I am successfull in validating the xml file but I am getting the following exception while converting the string from the inputstream:
“java.io.EOFException: Unexpected end of ZLIB input stream”
I have tried all the solutions provided in the Stack Overflow and other forum site but I am not yet successfull. Any help will be really appreciated:
Following is the code:
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());
}
You cannot read the stream “sourceFile” twice !
An input stream is supposed to be read sequentially to the end. You must close it and reopen it.