diff --git a/src/java/org/apache/poi/POIDocument.java b/src/java/org/apache/poi/POIDocument.java index 68ed3c176..27a3ca648 100644 --- a/src/java/org/apache/poi/POIDocument.java +++ b/src/java/org/apache/poi/POIDocument.java @@ -19,6 +19,7 @@ package org.apache.poi; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.io.Closeable; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -45,7 +46,7 @@ import org.apache.poi.util.POILogger; * Document classes. * Currently, this relates to Document Information Properties */ -public abstract class POIDocument { +public abstract class POIDocument implements Closeable { /** Holds metadata on our document */ private SummaryInformation sInf; /** Holds further metadata on our document */ @@ -319,6 +320,22 @@ public abstract class POIDocument { */ public abstract void write(OutputStream out) throws IOException; + /** + * Closes the underlying {@link NPOIFSFileSystem} from which + * the document was read, if any. Has no effect on documents + * opened from an InputStream, or newly created ones. + *

Once {@link #close()} has been called, no further operations + * should be called on the document. + */ + public void close() throws IOException { + if (directory != null) { + if (directory.getNFileSystem() != null) { + directory.getNFileSystem().close(); + directory = null; + } + } + } + @Internal public DirectoryNode getDirectory() { return directory; diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index 4b041ef17..d35aa4b57 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java @@ -1276,16 +1276,13 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss * Closes the underlying {@link NPOIFSFileSystem} from which * the Workbook was read, if any. Has no effect on Workbooks * opened from an InputStream, or newly created ones. + *

Once {@link #close()} has been called, no further + * operations, updates or reads should be performed on the + * Workbook. */ @Override - public void close() throws IOException - { - if (directory != null) { - if (directory.getNFileSystem() != null) { - directory.getNFileSystem().close(); - directory = null; - } - } + public void close() throws IOException { + super.close(); } /**