public class OPOIFSFileSystem extends Object implements POIFSViewable
This is the main class of the POIFS system; it manages the entire life cycle of the filesystem.
This is the older version, which uses more memory, and doesn't support in-place writes.
Constructor and Description |
---|
OPOIFSFileSystem()
Constructor, intended for writing
|
OPOIFSFileSystem(InputStream stream)
Create a OPOIFSFileSystem from an InputStream.
|
Modifier and Type | Method and Description |
---|---|
protected void |
closeInputStream(InputStream stream,
boolean success) |
DirectoryEntry |
createDirectory(String name)
create a new DirectoryEntry in the root directory
|
DocumentEntry |
createDocument(InputStream stream,
String name)
Create a new document to be added to the root directory
|
DocumentEntry |
createDocument(String name,
int size,
POIFSWriterListener writer)
create a new DocumentEntry in the root entry; the data will be
provided later
|
DocumentInputStream |
createDocumentInputStream(String documentName)
open a document in the root entry's list of entries
|
static InputStream |
createNonClosingInputStream(InputStream is)
Convenience method for clients that want to avoid the auto-close behaviour of the constructor.
|
int |
getBigBlockSize() |
POIFSBigBlockSize |
getBigBlockSizeDetails() |
DirectoryNode |
getRoot()
get the root entry
|
String |
getShortDescription()
Provides a short description of the object, to be used when a
POIFSViewable object has not provided its contents.
|
Object[] |
getViewableArray()
Get an array of objects, some of which may implement
POIFSViewable
|
Iterator<Object> |
getViewableIterator()
Get an Iterator of objects, some of which may implement
POIFSViewable
|
static boolean |
hasPOIFSHeader(byte[] header8Bytes)
Checks if the supplied first 8 bytes of a stream / file
has a POIFS (OLE2) header.
|
static boolean |
hasPOIFSHeader(InputStream inp)
Checks that the supplied InputStream (which MUST
support mark and reset, or be a PushbackInputStream)
has a POIFS (OLE2) header at the start of it.
|
static void |
main(String[] args)
read in a file and write it back out again
|
boolean |
preferArray()
Give viewers a hint as to whether to call getViewableArray or
getViewableIterator
|
void |
writeFilesystem(OutputStream stream)
Write the filesystem out
|
public OPOIFSFileSystem()
public OPOIFSFileSystem(InputStream stream) throws IOException
true
for markSupported()). In the unlikely case that the caller has such a stream
and needs to use it after this constructor completes, a work around is to wrap the
stream in order to trap the close() call. A convenience method (
createNonClosingInputStream()) has been provided for this purpose:
InputStream wrappedStream = OPOIFSFileSystem.createNonClosingInputStream(is); HSSFWorkbook wb = new HSSFWorkbook(wrappedStream); is.reset(); doSomethingElse(is);Note also the special case of ByteArrayInputStream for which the close() method does nothing.
ByteArrayInputStream bais = ... HSSFWorkbook wb = new HSSFWorkbook(bais); // calls bais.close() ! bais.reset(); // no problem doSomethingElse(bais);
stream
- the InputStream from which to read the dataIOException
- on errors reading, or on invalid datapublic static InputStream createNonClosingInputStream(InputStream is)
protected void closeInputStream(InputStream stream, boolean success)
stream
- the stream to be closedsuccess
- false
if an exception is currently being thrown in the calling methodpublic static boolean hasPOIFSHeader(InputStream inp) throws IOException
inp
- An InputStream which supports either mark/reset, or is a PushbackInputStreamIOException
public static boolean hasPOIFSHeader(byte[] header8Bytes)
public DocumentEntry createDocument(InputStream stream, String name) throws IOException
stream
- the InputStream from which the document's data
will be obtainedname
- the name of the new POIFSDocumentIOException
- on error creating the new POIFSDocumentpublic DocumentEntry createDocument(String name, int size, POIFSWriterListener writer) throws IOException
name
- the name of the new DocumentEntrysize
- the size of the new DocumentEntrywriter
- the writer of the new DocumentEntryIOException
public DirectoryEntry createDirectory(String name) throws IOException
name
- the name of the new DirectoryEntryIOException
- on name duplicationpublic void writeFilesystem(OutputStream stream) throws IOException
stream
- the OutputStream to which the filesystem will be
writtenIOException
- thrown on errors writing to the streampublic static void main(String[] args) throws IOException
args
- names of the files; arg[ 0 ] is the input file,
arg[ 1 ] is the output fileIOException
public DirectoryNode getRoot()
public DocumentInputStream createDocumentInputStream(String documentName) throws IOException
documentName
- the name of the document to be openedIOException
- if the document does not exist or the
name is that of a DirectoryEntrypublic Object[] getViewableArray()
getViewableArray
in interface POIFSViewable
public Iterator<Object> getViewableIterator()
getViewableIterator
in interface POIFSViewable
public boolean preferArray()
preferArray
in interface POIFSViewable
public String getShortDescription()
getShortDescription
in interface POIFSViewable
public int getBigBlockSize()
public POIFSBigBlockSize getBigBlockSizeDetails()
Copyright © 2007-2019. All Rights Reserved.