Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.poi.poifs.filesystem
Class OPOIFSFileSystem

    java.lang.Object
      org.apache.poi.poifs.filesystem.OPOIFSFileSystem

All Implemented Interfaces:
  POIFSViewable

    public class OPOIFSFileSystem

extends java.lang.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 Summary
`OPOIFSFileSystem()` Constructor, intended for writing
`OPOIFSFileSystem(java.io.InputStream stream)` Create a OPOIFSFileSystem from an `InputStream`.

Method Summary
`protected void` | `closeInputStream(java.io.InputStream stream, boolean success)`
`DirectoryEntry` | `createDirectory(java.lang.String name)` create a new DirectoryEntry in the root directory
`DocumentEntry` | `createDocument(java.io.InputStream stream, java.lang.String name)` Create a new document to be added to the root directory
`DocumentEntry` | `createDocument(java.lang.String name, int size, POIFSWriterListener writer)` create a new DocumentEntry in the root entry; the data will be provided later
`DocumentInputStream` | `createDocumentInputStream(java.lang.String documentName)` open a document in the root entry's list of entries
`static java.io.InputStream` | `createNonClosingInputStream(java.io.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
`java.lang.String` | `getShortDescription()` Provides a short description of the object, to be used when a POIFSViewable object has not provided its contents.
`java.lang.Object[]` | `getViewableArray()` Get an array of objects, some of which may implement POIFSViewable
`java.util.Iterator<java.lang.Object>` | `getViewableIterator()` Get an Iterator of objects, some of which may implement POIFSViewable
`static boolean` | `hasPOIFSHeader(byte[] header8Bytes)` Deprecated. in 3.17-beta2, use `FileMagic.valueOf(InputStream)` == `FileMagic.OLE2` instead
`static boolean` | `hasPOIFSHeader(java.io.InputStream inp)` Deprecated. in 3.17-beta2, use `FileMagic.valueOf(InputStream)` == `FileMagic.OLE2` instead
`static void` | `main(java.lang.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(java.io.OutputStream stream)` Write the filesystem out

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### OPOIFSFileSystem

    public OPOIFSFileSystem()

  Constructor, intended for writing

### OPOIFSFileSystem

    public OPOIFSFileSystem(java.io.InputStream stream)
                     throws java.io.IOException

  Create a OPOIFSFileSystem from an `InputStream`. Normally the stream is read until EOF. The stream is always closed.

  Some streams are usable after reaching EOF (typically those that return `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);

  Parameters:
    `stream` - the InputStream from which to read the data
  Throws:
    `java.io.IOException` - on errors reading, or on invalid data

Method Detail

### createNonClosingInputStream

    public static java.io.InputStream createNonClosingInputStream(java.io.InputStream is)

  Convenience method for clients that want to avoid the auto-close behaviour of the constructor.

### closeInputStream

    protected void closeInputStream(java.io.InputStream stream,
                                    boolean success)

  Parameters:
    `stream` - the stream to be closed
    `success` - `false` if an exception is currently being thrown in the calling method

### hasPOIFSHeader

    @Deprecated
    @Removal(version="4.0")
    public static boolean hasPOIFSHeader(java.io.InputStream inp)
                                  throws java.io.IOException

  Deprecated. in 3.17-beta2, use `FileMagic.valueOf(InputStream)` == `FileMagic.OLE2` instead

  Checks that the supplied InputStream (which MUST support mark and reset) has a POIFS (OLE2) header at the start of it. If unsure if your InputStream does support mark / reset, use `FileMagic.prepareToCheckMagic(InputStream)` to wrap it and make sure to always use that, and not the original! After the method call, the InputStream is at the same position as of the time of entering the method.

  Parameters:
    `inp` - An InputStream which supports either mark/reset
  Throws:
    `java.io.IOException`

### hasPOIFSHeader

    @Deprecated
    @Removal(version="4.0")
    public static boolean hasPOIFSHeader(byte[] header8Bytes)

  Deprecated. in 3.17-beta2, use `FileMagic.valueOf(InputStream)` == `FileMagic.OLE2` instead

  Checks if the supplied first 8 bytes of a stream / file has a POIFS (OLE2) header.

### createDocument

    public DocumentEntry createDocument(java.io.InputStream stream,
                                        java.lang.String name)
                                 throws java.io.IOException

  Create a new document to be added to the root directory

  Parameters:
    `stream` - the InputStream from which the document's data will be obtained
    `name` - the name of the new POIFSDocument
  Returns:
    the new DocumentEntry
  Throws:
    `java.io.IOException` - on error creating the new POIFSDocument

### createDocument

    public DocumentEntry createDocument(java.lang.String name,
                                        int size,
                                        POIFSWriterListener writer)
                                 throws java.io.IOException

  create a new DocumentEntry in the root entry; the data will be provided later

  Parameters:
    `name` - the name of the new DocumentEntry
    `size` - the size of the new DocumentEntry
    `writer` - the writer of the new DocumentEntry
  Returns:
    the new DocumentEntry
  Throws:
    `java.io.IOException`

### createDirectory

    public DirectoryEntry createDirectory(java.lang.String name)
                                   throws java.io.IOException

  create a new DirectoryEntry in the root directory

  Parameters:
    `name` - the name of the new DirectoryEntry
  Returns:
    the new DirectoryEntry
  Throws:
    `java.io.IOException` - on name duplication

### writeFilesystem

    public void writeFilesystem(java.io.OutputStream stream)
                         throws java.io.IOException

  Write the filesystem out

  Parameters:
    `stream` - the OutputStream to which the filesystem will be written
  Throws:
    `java.io.IOException` - thrown on errors writing to the stream

### main

    public static void main(java.lang.String[] args)
                     throws java.io.IOException

  read in a file and write it back out again

  Parameters:
    `args` - names of the files; arg[ 0 ] is the input file, arg[ 1 ] is the output file
  Throws:
    `java.io.IOException`

### getRoot

    public DirectoryNode getRoot()

  get the root entry

  Returns:
    the root entry

### createDocumentInputStream

    public DocumentInputStream createDocumentInputStream(java.lang.String documentName)
                                                  throws java.io.IOException

  open a document in the root entry's list of entries

  Parameters:
    `documentName` - the name of the document to be opened
  Returns:
    a newly opened DocumentInputStream
  Throws:
    `java.io.IOException` - if the document does not exist or the name is that of a DirectoryEntry

### getViewableArray

    public java.lang.Object[] getViewableArray()

  Get an array of objects, some of which may implement POIFSViewable

  Specified by:
    `getViewableArray` in interface `POIFSViewable`
  Returns:
    an array of Object; may not be null, but may be empty

### getViewableIterator

    public java.util.Iterator<java.lang.Object> getViewableIterator()

  Get an Iterator of objects, some of which may implement POIFSViewable

  Specified by:
    `getViewableIterator` in interface `POIFSViewable`
  Returns:
    an Iterator; may not be null, but may have an empty back end store

### preferArray

    public boolean preferArray()

  Give viewers a hint as to whether to call getViewableArray or getViewableIterator

  Specified by:
    `preferArray` in interface `POIFSViewable`
  Returns:
    true if a viewer should call getViewableArray, false if a viewer should call getViewableIterator

### getShortDescription

    public java.lang.String getShortDescription()

  Provides a short description of the object, to be used when a POIFSViewable object has not provided its contents.

  Specified by:
    `getShortDescription` in interface `POIFSViewable`
  Returns:
    short description

### getBigBlockSize

    public int getBigBlockSize()

  Returns:
    The Big Block size, normally 512 bytes, sometimes 4096 bytes

### getBigBlockSizeDetails

    public POIFSBigBlockSize getBigBlockSizeDetails()

  Returns:
    The Big Block size, normally 512 bytes, sometimes 4096 bytes

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright 2017 The Apache Software Foundation or its licensors, as applicable.