uk.ac.starlink.table.storage
Class MemoryByteStore
java.lang.Object
java.io.OutputStream
java.io.ByteArrayOutputStream
uk.ac.starlink.table.storage.MemoryByteStore
- All Implemented Interfaces:
- Closeable, Flushable, ByteStore
public class MemoryByteStore
- extends ByteArrayOutputStream
- implements ByteStore
ByteStore implementation which stores bytes in a buffer in memory.
- Since:
- 11 Jul 2008
Method Summary |
void |
close()
Tidies up. |
void |
copy(OutputStream out)
Takes all the data written so far into this store's sink stream
and copies it to a destination stream. |
OutputStream |
getOutputStream()
Returns an output stream which can be used to write to the store. |
ByteBuffer[] |
toByteBuffers()
Returns an array of byte buffers containing the bytes written
to this store. |
MemoryByteStore
public MemoryByteStore()
getOutputStream
public 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
copy
public void copy(OutputStream out)
throws 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:
IOException
toByteBuffers
public ByteBuffer[] toByteBuffers()
- 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
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 Closeable
- Specified by:
close
in interface ByteStore
- Overrides:
close
in class ByteArrayOutputStream