Package uk.ac.starlink.table.storage
Class FileByteStore
- java.lang.Object
-
- uk.ac.starlink.table.storage.FileByteStore
-
-
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 Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Tidies up.static void
copy(java.io.File file, java.io.OutputStream out)
Utility method to copy the contents of a file to an output stream.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.static java.nio.ByteBuffer[]
toByteBuffers(java.io.File file)
Returns a read-only ByteBuffer array representing the contents of a file, with default maximum buffer length.
-
-
-
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 filejava.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 filejava.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 aBufferedOutputStream
for efficiency if required.- Specified by:
getOutputStream
in interfaceByteStore
- Returns:
- data sink stream
-
getLength
public long getLength()
Description copied from interface:ByteStore
Returns the number of bytes currently stored in this object.
-
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.
-
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 exceedsInteger.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 interfaceByteStore
- Returns:
- byte buffer containing bytes written
- Throws:
java.io.IOException
- if there is an I/O error
-
copy
public static void copy(java.io.File file, java.io.OutputStream out) throws java.io.IOException
Utility method to copy the contents of a file to an output stream. The stream is not closed.- Parameters:
file
- fileout
- destination stream- Throws:
java.io.IOException
-
toByteBuffers
public static java.nio.ByteBuffer[] toByteBuffers(java.io.File file) throws java.io.IOException
Returns a read-only ByteBuffer array representing the contents of a file, with default maximum buffer length. If the file can be represented in a single ByteBuffer the result will be a single-element array; otherwise the concatenation of the buffers in the result gives the file content.- Parameters:
file
- file- Returns:
- mapped byte buffers
- Throws:
java.io.IOException
-
-