From 39898cb94a470beed86589af6010185d56a382d7 Mon Sep 17 00:00:00 2001 From: Al Sutton Date: Thu, 1 Dec 2011 11:30:14 +0000 Subject: [PATCH] Added try/finally protection to ensure streams are closed. Added initial size guess for the CharBuffer --- .../net/yacy/document/parser/ooxmlParser.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/source/net/yacy/document/parser/ooxmlParser.java b/source/net/yacy/document/parser/ooxmlParser.java index a5de7f8e4..195b3f7f7 100644 --- a/source/net/yacy/document/parser/ooxmlParser.java +++ b/source/net/yacy/document/parser/ooxmlParser.java @@ -100,17 +100,21 @@ public class ooxmlParser extends AbstractParser implements Parser { || entryName.startsWith("xl/worksheets/sheet")) { // create a writer for output - writer = new CharBuffer(); - - // extract data - final InputStream zipFileEntryStream = zipFile.getInputStream(zipEntry); - final SAXParser saxParser = saxParserFactory.newSAXParser(); - saxParser.parse(zipFileEntryStream, new ODContentHandler(writer)); - - // close readers and writers - zipFileEntryStream.close(); - writer.close(); - + writer = new CharBuffer((int)zipEntry.getSize()); + try { + // extract data + final InputStream zipFileEntryStream = zipFile.getInputStream(zipEntry); + try { + final SAXParser saxParser = saxParserFactory.newSAXParser(); + saxParser.parse(zipFileEntryStream, new ODContentHandler(writer)); + + // close readers and writers + } finally { + zipFileEntryStream.close(); + } + } finally { + writer.close(); + } } else if (entryName.equals("docProps/core.xml")) { // meta.xml contains metadata about the document final InputStream zipFileEntryStream = zipFile.getInputStream(zipEntry);