Package loci.common

Class ByteArrayHandle

java.lang.Object
loci.common.AbstractNIOHandle
loci.common.ByteArrayHandle
All Implemented Interfaces:
DataInput, DataOutput, IRandomAccess

public class ByteArrayHandle extends AbstractNIOHandle
A wrapper for a byte array that implements the IRandomAccess interface.
See Also:
  • Field Details

    • INITIAL_LENGTH

      protected static final int INITIAL_LENGTH
      Initial length of a new file.
      See Also:
    • buffer

      protected ByteBuffer buffer
      Backing ByteBuffer.
  • Constructor Details

    • ByteArrayHandle

      public ByteArrayHandle(byte[] bytes)
      Creates a random access byte stream to read from, and write to, the bytes specified by the byte[] argument.
      Parameters:
      bytes - byte array to work with
    • ByteArrayHandle

      public ByteArrayHandle(ByteBuffer bytes)
      Creates a random access byte stream to read from, and write to, the supplied ByteBuffer.
      Parameters:
      bytes - ByteBuffer used for reading and writing
    • ByteArrayHandle

      public ByteArrayHandle(int capacity)
      Creates a random access byte stream to read from, and write to.
      Parameters:
      capacity - Number of bytes to initially allocate.
    • ByteArrayHandle

      public ByteArrayHandle()
      Creates a random access byte stream to write to a byte array.
  • Method Details

    • getBytes

      public byte[] getBytes()
      Gets a byte array representing the current state of this ByteArrayHandle.
      Returns:
      a byte array representation of the backing ByteBuffer
    • getByteBuffer

      public ByteBuffer getByteBuffer()
      Gets the byte buffer backing this handle. NOTE: This is the backing buffer. Any modifications to this buffer including position, length and capacity will affect subsequent calls upon its source handle.
      Returns:
      Backing buffer of this handle.
    • setLength

      public void setLength(long length) throws IOException
      Description copied from class: AbstractNIOHandle
      Sets the new length of the handle.
      Specified by:
      setLength in class AbstractNIOHandle
      Parameters:
      length - New length.
      Throws:
      IOException - If there is an error changing the handle's length.
    • close

      public void close()
      Description copied from interface: IRandomAccess
      Closes this random access stream and releases any system resources associated with the stream.
    • getFilePointer

      public long getFilePointer()
      Description copied from interface: IRandomAccess
      Returns the current offset in this stream.
      Returns:
      the current byte offset within the file; expected to be non-negative and less than the value of #length()
    • length

      public long length()
      Description copied from interface: IRandomAccess
      Returns the length of this stream.
      Returns:
      the length in bytes of the stream
    • read

      public int read(byte[] b) throws IOException
      Description copied from interface: IRandomAccess
      Reads up to b.length bytes of data from this stream into an array of bytes.
      Parameters:
      b - the array to fill from this stream
      Returns:
      the total number of bytes read into the buffer.
      Throws:
      IOException - if reading is not possible
    • read

      public int read(byte[] b, int off, int len) throws IOException
      Description copied from interface: IRandomAccess
      Reads up to len bytes of data from this stream into an array of bytes.
      Parameters:
      b - the array to fill from this stream
      off - the offset in b from which to start filling; expected to be non-negative and no greater than b.length - len
      len - the number of bytes to read; expected to be positive and no greater than b.length - offset
      Returns:
      the total number of bytes read into the buffer.
      Throws:
      IOException - if reading is not possible
    • read

      public int read(ByteBuffer buf) throws IOException
      Description copied from interface: IRandomAccess
      Reads up to buffer.capacity() bytes of data from this stream into a ByteBuffer.
      Parameters:
      buf - the ByteBuffer to fill from this stream
      Returns:
      the total number of bytes read into the buffer.
      Throws:
      IOException - if reading is not possible
    • read

      public int read(ByteBuffer buf, int off, int len) throws IOException
      Description copied from interface: IRandomAccess
      Reads up to len bytes of data from this stream into a ByteBuffer.
      Parameters:
      buf - the ByteBuffer to fill from this stream
      off - the offset in b from which to start filling; expected to be non-negative and no greater than buffer.capacity() - len
      len - the number of bytes to read; expected to be positive and no greater than buffer.capacity() - offset
      Returns:
      the total number of bytes read into the buffer.
      Throws:
      IOException - if reading is not possible
    • seek

      public void seek(long pos) throws IOException
      Description copied from interface: IRandomAccess
      Sets the stream pointer offset, measured from the beginning of this stream, at which the next read or write occurs.
      Parameters:
      pos - new byte offset (pointer) in the current stream. Unless otherwise noted, may be larger or smaller than the current pointer, but must be non-negative and less than the value of #length()
      Throws:
      IOException - if pos is invalid or the seek fails
      See Also:
    • getOrder

      public ByteOrder getOrder()
      Description copied from interface: IRandomAccess
      Returns the current order (endianness) of the stream.
      Returns:
      See above.
    • setOrder

      public void setOrder(ByteOrder order)
      Description copied from interface: IRandomAccess
      Sets the byte order (endianness) of the stream.
      Parameters:
      order - Order to set.
    • readBoolean

      public boolean readBoolean() throws IOException
      Throws:
      IOException
    • readByte

      public byte readByte() throws IOException
      Throws:
      IOException
    • readChar

      public char readChar() throws IOException
      Throws:
      IOException
    • readDouble

      public double readDouble() throws IOException
      Throws:
      IOException
    • readFloat

      public float readFloat() throws IOException
      Throws:
      IOException
    • readFully

      public void readFully(byte[] b) throws IOException
      Throws:
      IOException
    • readFully

      public void readFully(byte[] b, int off, int len) throws IOException
      Throws:
      IOException
    • readInt

      public int readInt() throws IOException
      Throws:
      IOException
    • readLine

      public String readLine() throws IOException
      Throws:
      IOException
    • readLong

      public long readLong() throws IOException
      Throws:
      IOException
    • readShort

      public short readShort() throws IOException
      Throws:
      IOException
    • readUnsignedByte

      public int readUnsignedByte() throws IOException
      Throws:
      IOException
    • readUnsignedShort

      public int readUnsignedShort() throws IOException
      Throws:
      IOException
    • readUTF

      public String readUTF() throws IOException
      Throws:
      IOException
    • skipBytes

      public int skipBytes(int n) throws IOException
      Throws:
      IOException
    • skipBytes

      public long skipBytes(long n) throws IOException
      Description copied from interface: IRandomAccess
      A long variant of IRandomAccess.skipBytes(int).
      Parameters:
      n - the number of bytes to skip
      Returns:
      the number of bytes skipped
      Throws:
      IOException - if the operation failed
    • write

      public void write(byte[] b) throws IOException
      Throws:
      IOException
    • write

      public void write(byte[] b, int off, int len) throws IOException
      Throws:
      IOException
    • write

      public void write(ByteBuffer buf) throws IOException
      Description copied from interface: IRandomAccess
      Writes up to buffer.capacity() bytes of data from the given ByteBuffer to this stream.
      Parameters:
      buf - the ByteBuffer containing bytes to write to this stream
      Throws:
      IOException - if writing is not possible
    • write

      public void write(ByteBuffer buf, int off, int len) throws IOException
      Description copied from interface: IRandomAccess
      Writes up to len bytes of data from the given ByteBuffer to this stream.
      Parameters:
      buf - the ByteBuffer containing bytes to write to this stream
      off - the offset in b from which to start writing; expected to be non-negative and no greater than buf.capacity() - len
      len - the number of bytes to write; expected to be positive and no greater than buf.capacity() - offset
      Throws:
      IOException - if writing is not possible
    • write

      public void write(int b) throws IOException
      Throws:
      IOException
    • writeBoolean

      public void writeBoolean(boolean v) throws IOException
      Throws:
      IOException
    • writeByte

      public void writeByte(int v) throws IOException
      Throws:
      IOException
    • writeBytes

      public void writeBytes(String s) throws IOException
      Throws:
      IOException
    • writeChar

      public void writeChar(int v) throws IOException
      Throws:
      IOException
    • writeChars

      public void writeChars(String s) throws IOException
      Throws:
      IOException
    • writeDouble

      public void writeDouble(double v) throws IOException
      Throws:
      IOException
    • writeFloat

      public void writeFloat(float v) throws IOException
      Throws:
      IOException
    • writeInt

      public void writeInt(int v) throws IOException
      Throws:
      IOException
    • writeLong

      public void writeLong(long v) throws IOException
      Throws:
      IOException
    • writeShort

      public void writeShort(int v) throws IOException
      Throws:
      IOException
    • writeUTF

      public void writeUTF(String str) throws IOException
      Throws:
      IOException