Class POIFSStream

  • All Implemented Interfaces:
    java.lang.Iterable<java.nio.ByteBuffer>

    public class POIFSStream
    extends java.lang.Object
    implements java.lang.Iterable<java.nio.ByteBuffer>
    This handles reading and writing a stream within a POIFSFileSystem. It can supply an iterator to read blocks, and way to write out to existing and new blocks. Most users will want a higher level version of this, which deals with properties to track which stream this is. This only works on big block streams, it doesn't handle small block ones. This uses the new NIO code TODO Implement a streaming write method, and append
    • Constructor Summary

      Constructors 
      Constructor Description
      POIFSStream​(BlockStore blockStore)
      Constructor for a new stream.
      POIFSStream​(BlockStore blockStore, int startBlock)
      Constructor for an existing stream.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void free()
      Frees all blocks in the stream
      java.io.OutputStream getOutputStream()  
      int getStartBlock()
      What block does this stream start at? Will be POIFSConstants.END_OF_CHAIN for a new stream that hasn't been written to yet.
      java.util.Iterator<java.nio.ByteBuffer> iterator()
      Returns an iterator that'll supply one ByteBuffer per block in the stream.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.lang.Iterable

        forEach, spliterator
    • Constructor Detail

      • POIFSStream

        public POIFSStream​(BlockStore blockStore,
                           int startBlock)
        Constructor for an existing stream. It's up to you to know how to get the start block (eg from a HeaderBlock or a Property)
      • POIFSStream

        public POIFSStream​(BlockStore blockStore)
        Constructor for a new stream. A start block won't be allocated until you begin writing to it.
    • Method Detail

      • getStartBlock

        public int getStartBlock()
        What block does this stream start at? Will be POIFSConstants.END_OF_CHAIN for a new stream that hasn't been written to yet.
      • iterator

        public java.util.Iterator<java.nio.ByteBuffer> iterator()
        Returns an iterator that'll supply one ByteBuffer per block in the stream.
        Specified by:
        iterator in interface java.lang.Iterable<java.nio.ByteBuffer>
      • getOutputStream

        public java.io.OutputStream getOutputStream()
                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • free

        public void free()
                  throws java.io.IOException
        Frees all blocks in the stream
        Throws:
        java.io.IOException