Class FileByteStore

  • All Implemented Interfaces:
    ByteStore

    public class FileByteStore
    extends java.lang.Object
    implements ByteStore
    ByteStore implementation which uses a temporary file.
    Since:
    11 Jul 2008
    Author:
    Mark Taylor
    • Constructor Summary

      Constructors 
      Constructor Description
      FileByteStore()
      Constructs a new FileByteStore which uses a temporary file as backing store.
      FileByteStore​(java.io.File file)
      Constructs a new FileByteStore which uses the given file as a backing store.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Tidies up.
      void copy​(java.io.OutputStream out)
      Takes all the data written so far into this store's sink stream and copies it to a destination stream.
      java.io.File getFile()
      Returns the file used by this store.
      long getLength()
      Returns the number of bytes currently stored in this object.
      java.io.OutputStream getOutputStream()
      Returns an output stream which can be used to write to the store.
      java.nio.ByteBuffer[] toByteBuffers()
      Returns an array of byte buffers containing the bytes written to this store.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • FileByteStore

        public FileByteStore​(java.io.File file)
                      throws java.io.IOException
        Constructs a new FileByteStore which uses the given file as a backing store. Nothing is done to mark this file as temporary.
        Parameters:
        file - location of the backing file which will be used
        Throws:
        java.io.IOException - if there is some I/O-related problem with opening the file
        java.lang.SecurityException - if the current security context does not allow writing to a temporary file
      • FileByteStore

        public FileByteStore()
                      throws java.io.IOException
        Constructs a new FileByteStore which uses a temporary file as backing store. The temporary file will be written to the default temporary directory, given by the value of the java.io.tmpdir system property.
        Throws:
        java.io.IOException - if there is some I/O-related problem with opening the file
        java.lang.SecurityException - if the current security context does not allow writing to a temporary file
    • Method Detail

      • getFile

        public java.io.File getFile()
        Returns the file used by this store.
        Returns:
        file
      • getOutputStream

        public java.io.OutputStream getOutputStream()
        Description copied from interface: ByteStore
        Returns an output stream which can be used to write to the store. May be called multiple times; always returns the same object. Note that this is not in general buffered - it is the responsibility of the user to take steps like wrapping it in a BufferedOutputStream for efficiency if required.
        Specified by:
        getOutputStream in interface ByteStore
        Returns:
        data sink stream
      • getLength

        public long getLength()
        Description copied from interface: ByteStore
        Returns the number of bytes currently stored in this object.
        Specified by:
        getLength in interface ByteStore
        Returns:
        byte count
      • copy

        public void copy​(java.io.OutputStream out)
                  throws java.io.IOException
        Description copied from interface: ByteStore
        Takes all the data written so far into this store's sink stream and copies it to a destination stream. The output stream is not closed.
        Specified by:
        copy in interface ByteStore
        Parameters:
        out - data destination stream
        Throws:
        java.io.IOException
      • toByteBuffers

        public java.nio.ByteBuffer[] toByteBuffers()
                                            throws java.io.IOException
        Description copied from interface: ByteStore
        Returns an array of byte buffers containing the bytes written to this store. The stored bytes are all of the bytes from the first buffer in the returned array, followed by all in the second, etc. In many cases the returned array will, and probably should, contain a single buffer, but if the written byte count exceeds Integer.MAX_VALUE, more than one will be required. The limit of each buffer indicates the number of bytes it contains.

        Usual usage will be to write all data, then call this method once; this model may affect implementation decisions about efficiency.

        Specified by:
        toByteBuffers in interface ByteStore
        Returns:
        byte buffer containing bytes written
        Throws:
        java.io.IOException - if there is an I/O error
      • close

        public void close()
        Description copied from interface: ByteStore
        Tidies up. Should be called when the data in this object is no longer required. This object may no longer be usable following a call to this method.
        Specified by:
        close in interface ByteStore