<changes>
<release version="3.8-beta5" date="2011-??-??">
+ <action dev="poi-developers" type="fix">52062 - ensure that temporary files in SXSSF are deleted</action>
<action dev="poi-developers" type="fix">50936 - Exception parsing MS Word 8.0 file (as duplicate of 47958)</action>
<action dev="poi-developers" type="fix">47958 - ArrayIndexOutOfBoundsException from PicturesTable.getAllPictures() during Escher tree walk</action>
<action dev="poi-developers" type="fix">51944 - PAPFormattedDiskPage.getPAPX - IndexOutOfBounds</action>
private void injectData(File zipfile, OutputStream out) throws IOException
{
ZipFile zip = new ZipFile(zipfile);
-
- ZipOutputStream zos = new ZipOutputStream(out);
-
- @SuppressWarnings("unchecked")
- Enumeration<ZipEntry> en = (Enumeration<ZipEntry>) zip.entries();
- while (en.hasMoreElements())
+ try
{
- ZipEntry ze = en.nextElement();
- zos.putNextEntry(new ZipEntry(ze.getName()));
- InputStream is = zip.getInputStream(ze);
- XSSFSheet xSheet=getSheetFromZipEntryName(ze.getName());
- if(xSheet!=null)
+ ZipOutputStream zos = new ZipOutputStream(out);
+ try
{
- SXSSFSheet sxSheet=getSXSSFSheet(xSheet);
- copyStreamAndInjectWorksheet(is,zos,sxSheet.getWorksheetXMLInputStream());
+ @SuppressWarnings("unchecked")
+ Enumeration<ZipEntry> en = (Enumeration<ZipEntry>) zip.entries();
+ while (en.hasMoreElements())
+ {
+ ZipEntry ze = en.nextElement();
+ zos.putNextEntry(new ZipEntry(ze.getName()));
+ InputStream is = zip.getInputStream(ze);
+ XSSFSheet xSheet=getSheetFromZipEntryName(ze.getName());
+ if(xSheet!=null)
+ {
+ SXSSFSheet sxSheet=getSXSSFSheet(xSheet);
+ InputStream xis = sxSheet.getWorksheetXMLInputStream();
+ try
+ {
+ copyStreamAndInjectWorksheet(is,zos,xis);
+ }
+ finally
+ {
+ xis.close();
+ }
+ }
+ else
+ {
+ copyStream(is, zos);
+ }
+ is.close();
+ }
}
- else
+ finally
{
- copyStream(is, zos);
+ zos.close();
}
- is.close();
}
-
- zos.close();
+ finally
+ {
+ zip.close();
+ }
}
private static void copyStream(InputStream in, OutputStream out) throws IOException {
byte[] chunk = new byte[1024];
}
//Save the template
- File tmplFile = File.createTempFile("poi-sxxsf-template", ".xlsx");
+ File tmplFile = File.createTempFile("poi-sxssf-template", ".xlsx");
tmplFile.deleteOnExit();
FileOutputStream os = new FileOutputStream(tmplFile);
_wb.write(os);