From e627fa54a2deb29f378d8d2e69e2af09aa57ca40 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 11 Sep 2014 08:48:10 +0000 Subject: [PATCH] Patch from Daniel Bonniot from bug #56956 - Add a NPOIFSFileSystem constructor with a FileChannel and the read-only option git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1624226 13f79535-47bb-0310-9956-ffa450edef68 --- .../poifs/filesystem/NPOIFSFileSystem.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java index 6099bb1ece..fd3529af3a 100644 --- a/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java @@ -153,7 +153,8 @@ public class NPOIFSFileSystem extends BlockStore * when you're done to have the underlying file closed, as the file is * kept open during normal operation to read the data out.

* - * @param file the File from which to read the data + * @param file the File from which to read or read/write the data + * @param readOnly whether the POIFileSystem will only be used in read-only mode * * @exception IOException on errors reading, or on invalid data */ @@ -165,7 +166,8 @@ public class NPOIFSFileSystem extends BlockStore /** *

Creates a POIFSFileSystem from an open FileChannel. This uses - * less memory than creating from an InputStream.

+ * less memory than creating from an InputStream. The stream will + * be used in read-write mode.

* *

Note that with this constructor, you will need to call {@link #close()} * when you're done to have the underlying Channel closed, as the channel is @@ -181,6 +183,25 @@ public class NPOIFSFileSystem extends BlockStore this(channel, null, false, false); } + /** + *

Creates a POIFSFileSystem from an open FileChannel. This uses + * less memory than creating from an InputStream.

+ * + *

Note that with this constructor, you will need to call {@link #close()} + * when you're done to have the underlying Channel closed, as the channel is + * kept open during normal operation to read the data out.

+ * + * @param channel the FileChannel from which to read or read/write the data + * @param readOnly whether the POIFileSystem will only be used in read-only mode + * + * @exception IOException on errors reading, or on invalid data + */ + public NPOIFSFileSystem(FileChannel channel, boolean readOnly) + throws IOException + { + this(channel, null, readOnly, false); + } + private NPOIFSFileSystem(FileChannel channel, File srcFile, boolean readOnly, boolean closeChannelOnError) throws IOException { -- 2.39.5