uk.ac.starlink.fits

## Class AbstractArrayDataIO

- java.lang.Object
- - uk.ac.starlink.fits.AbstractArrayDataIO

- All Implemented Interfaces:
    java.io.DataInput, java.io.DataOutput, nom.tam.util.ArrayDataInput, nom.tam.util.ArrayDataOutput
  Direct Known Subclasses:
    MappedFile, MultiMappedFile

      public abstract class AbstractArrayDataIO
      extends java.lang.Object
      implements nom.tam.util.ArrayDataInput, nom.tam.util.ArrayDataOutput

  Abstract implementation of an implementation of a `nom.tam.util`-compatible FITS I/O handler.

  The ArrayDataInput interface contains a lot of methods declared like

           int read(type[]) throws IOException;

  whose behaviour is not documented - when do they throw an exception and what do they return? The behaviour implemented here follows that of the `BufferedFile` implementation (which is similarly undocumented). It is as follows:
  - The methods read as many items as there are left, up to the requested maximum or the end of file.
  - The return value is the number of bytes read
  - An EOFException is thrown only if no items could be read
  Consult the `BufferedFile` implementation for more details.
  Since:
    5 Jan 2007

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractArrayDataIO()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract byte` | `get()` Reads one byte from the current position.
    `protected abstract void` | `get(byte[] buf, int offset, int length)` Reads bytes into a buffer from the current position.
    `abstract long` | `length()` Returns the size of this buffer.
    `protected abstract void` | `put(byte b)` Writes a single byte at the current position.
    `protected abstract void` | `put(byte[] buf, int offset, int length)` Writes bytes from a buffer to the current position.
    `int` | `read(boolean[] buf)`
    `int` | `read(boolean[] buf, int start, int length)`
    `int` | `read(byte[] buf)`
    `int` | `read(byte[] buf, int start, int length)`
    `int` | `read(char[] buf)`
    `int` | `read(char[] buf, int start, int length)`
    `int` | `read(double[] buf)`
    `int` | `read(double[] buf, int start, int length)`
    `int` | `read(float[] buf)`
    `int` | `read(float[] buf, int start, int length)`
    `int` | `read(int[] buf)`
    `int` | `read(int[] buf, int start, int length)`
    `int` | `read(long[] buf)`
    `int` | `read(long[] buf, int start, int length)`
    `int` | `read(short[] buf)`
    `int` | `read(short[] buf, int start, int length)`
    `int` | `readArray(java.lang.Object o)`
    `boolean` | `readBoolean()`
    `byte` | `readByte()`
    `char` | `readChar()`
    `double` | `readDouble()`
    `float` | `readFloat()`
    `void` | `readFully(byte[] buf)`
    `void` | `readFully(byte[] buf, int start, int len)` Reads a specified number of bytes into an array.
    `int` | `readInt()`
    `long` | `readLArray(java.lang.Object o)`
    `java.lang.String` | `readLine()` Deprecated. see `DataInputStream.readLine()`
    `long` | `readLong()`
    `short` | `readShort()`
    `int` | `readUnsignedByte()`
    `int` | `readUnsignedShort()`
    `java.lang.String` | `readUTF()`
    `protected abstract long` | `remaining()` Returns the number of bytes remaining between the current position and the end of the file.
    `void` | `write(boolean[] buf)`
    `void` | `write(boolean[] buf, int start, int length)`
    `void` | `write(byte[] buf)`
    `void` | `write(byte[] buf, int start, int length)`
    `void` | `write(char[] buf)`
    `void` | `write(char[] buf, int start, int length)`
    `void` | `write(double[] buf)`
    `void` | `write(double[] buf, int start, int length)`
    `void` | `write(float[] buf)`
    `void` | `write(float[] buf, int start, int length)`
    `void` | `write(int val)`
    `void` | `write(int[] buf)`
    `void` | `write(int[] buf, int start, int length)`
    `void` | `write(long[] buf)`
    `void` | `write(long[] buf, int start, int length)`
    `void` | `write(short[] buf)`
    `void` | `write(short[] buf, int start, int length)`
    `void` | `write(java.lang.String[] strings)`
    `void` | `write(java.lang.String[] strings, int start, int length)`
    `void` | `writeArray(java.lang.Object o)`
    `void` | `writeBoolean(boolean val)`
    `void` | `writeByte(int val)`
    `void` | `writeBytes(java.lang.String s)`
    `void` | `writeChar(int val)`
    `void` | `writeChars(java.lang.String s)`
    `void` | `writeDouble(double val)`
    `void` | `writeFloat(float val)`
    `void` | `writeInt(int val)`
    `void` | `writeLong(long val)`
    `void` | `writeShort(int val)`
    `void` | `writeUTF(java.lang.String str)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface nom.tam.util.ArrayDataInput

      `close, skip`

    - ### Methods inherited from interface java.io.DataInput

      `skipBytes`

    - ### Methods inherited from interface nom.tam.util.ArrayDataOutput

      `close, flush`

- - ### Constructor Detail

    - #### AbstractArrayDataIO

          public AbstractArrayDataIO()

  - ### Method Detail

    - #### get

          protected abstract byte get()
                               throws java.io.IOException

      Reads one byte from the current position.
      Returns:
        next byte
      Throws:
        `java.io.IOException`

    - #### get

          protected abstract void get(byte[] buf,
                                      int offset,
                                      int length)
                               throws java.io.IOException

      Reads bytes into a buffer from the current position.
      Parameters:
        `buf` - destination buffer
        `offset` - offset of first byte in `buf` to be written
        `length` - maximum number of bytes to be written to `buf`
      Throws:
        `java.io.IOException`

    - #### put

          protected abstract void put(byte b)
                               throws java.io.IOException

      Writes a single byte at the current position.
      Parameters:
        `b` - output byte
      Throws:
        `java.io.IOException`

    - #### put

          protected abstract void put(byte[] buf,
                                      int offset,
                                      int length)
                               throws java.io.IOException

      Writes bytes from a buffer to the current position.
      Parameters:
        `buf` - source buffer
        `offset` - offset of first byte in `buf` to be read
        `length` - number of bytes from `buf` to be read
      Throws:
        `java.io.IOException`

    - #### length

          public abstract long length()

      Returns the size of this buffer. May be -1 if not known/unlimited.
      Returns:
        length or -1

    - #### remaining

          protected abstract long remaining()

      Returns the number of bytes remaining between the current position and the end of the file. If there is no end to the file, it is permissible to return `Long.MAX_VALUE`;
      Returns:
        number of bytes left in file

    - #### readBoolean

          public boolean readBoolean()
                              throws java.io.IOException

      Specified by:
        `readBoolean` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readByte

          public byte readByte()
                        throws java.io.IOException

      Specified by:
        `readByte` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readShort

          public short readShort()
                          throws java.io.IOException

      Specified by:
        `readShort` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readChar

          public char readChar()
                        throws java.io.IOException

      Specified by:
        `readChar` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readInt

          public int readInt()
                      throws java.io.IOException

      Specified by:
        `readInt` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readLong

          public long readLong()
                        throws java.io.IOException

      Specified by:
        `readLong` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readFloat

          public float readFloat()
                          throws java.io.IOException

      Specified by:
        `readFloat` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readDouble

          public double readDouble()
                            throws java.io.IOException

      Specified by:
        `readDouble` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readUnsignedByte

          public int readUnsignedByte()
                               throws java.io.IOException

      Specified by:
        `readUnsignedByte` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readUnsignedShort

          public int readUnsignedShort()
                                throws java.io.IOException

      Specified by:
        `readUnsignedShort` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readUTF

          public java.lang.String readUTF()
                                   throws java.io.IOException

      Specified by:
        `readUTF` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### readLine

          @Deprecated
          public java.lang.String readLine()
                                                throws java.io.IOException

      Deprecated. see `DataInputStream.readLine()`
      Not implemented - this method is deprecated in any case.
      Specified by:
        `readLine` in interface `java.io.DataInput`
      Throws:
        `java.lang.UnsupportedOperationException` - always
        `java.io.IOException`

    - #### readFully

          public void readFully(byte[] buf,
                                int start,
                                int len)
                         throws java.io.IOException

      Reads a specified number of bytes into an array. Unlike the read methods, this throws an EOFException if insufficient bytes are available. In this case all the bytes that can be read, will be read before the exception is thrown.
      Specified by:
        `readFully` in interface `java.io.DataInput`
      Parameters:
        `buf` - the byte buffer into which to read
        `start` - the index in buf at which to start putting bytes
        `len` - the number of bytes which must be read
      Throws:
        `java.io.EOFException` - if there are fewer than len bytes left
        `java.io.IOException`

    - #### read

          public int read(byte[] buf,
                          int start,
                          int length)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(boolean[] buf,
                          int start,
                          int length)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(short[] buf,
                          int start,
                          int length)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(char[] buf,
                          int start,
                          int length)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(int[] buf,
                          int start,
                          int length)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(long[] buf,
                          int start,
                          int length)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(float[] buf,
                          int start,
                          int length)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(double[] buf,
                          int start,
                          int length)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### readFully

          public void readFully(byte[] buf)
                         throws java.io.IOException

      Specified by:
        `readFully` in interface `java.io.DataInput`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(byte[] buf)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(boolean[] buf)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(short[] buf)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(char[] buf)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(int[] buf)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(long[] buf)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(float[] buf)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(double[] buf)
                   throws java.io.IOException

      Specified by:
        `read` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### readArray

          public int readArray(java.lang.Object o)
                        throws java.io.IOException

      Specified by:
        `readArray` in interface `nom.tam.util.ArrayDataInput`
      Throws:
        `java.io.IOException`

    - #### readLArray

          public long readLArray(java.lang.Object o)
                          throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### write

          public void write(int val)
                     throws java.io.IOException

      Specified by:
        `write` in interface `java.io.DataOutput`
      Throws:
        `java.io.IOException`

    - #### writeBoolean

          public void writeBoolean(boolean val)
                            throws java.io.IOException

      Specified by:
        `writeBoolean` in interface `java.io.DataOutput`
      Throws:
        `java.io.IOException`

    - #### writeByte

          public void writeByte(int val)
                         throws java.io.IOException

      Specified by:
        `writeByte` in interface `java.io.DataOutput`
      Throws:
        `java.io.IOException`

    - #### writeShort

          public void writeShort(int val)
                          throws java.io.IOException

      Specified by:
        `writeShort` in interface `java.io.DataOutput`
      Throws:
        `java.io.IOException`

    - #### writeChar

          public void writeChar(int val)
                         throws java.io.IOException

      Specified by:
        `writeChar` in interface `java.io.DataOutput`
      Throws:
        `java.io.IOException`

    - #### writeInt

          public void writeInt(int val)
                        throws java.io.IOException

      Specified by:
        `writeInt` in interface `java.io.DataOutput`
      Throws:
        `java.io.IOException`

    - #### writeLong

          public void writeLong(long val)
                         throws java.io.IOException

      Specified by:
        `writeLong` in interface `java.io.DataOutput`
      Throws:
        `java.io.IOException`

    - #### writeFloat

          public void writeFloat(float val)
                          throws java.io.IOException

      Specified by:
        `writeFloat` in interface `java.io.DataOutput`
      Throws:
        `java.io.IOException`

    - #### writeDouble

          public void writeDouble(double val)
                           throws java.io.IOException

      Specified by:
        `writeDouble` in interface `java.io.DataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(byte[] buf,
                            int start,
                            int length)
                     throws java.io.IOException

      Specified by:
        `write` in interface `java.io.DataOutput`
      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(boolean[] buf,
                            int start,
                            int length)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(short[] buf,
                            int start,
                            int length)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(char[] buf,
                            int start,
                            int length)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(int[] buf,
                            int start,
                            int length)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(long[] buf,
                            int start,
                            int length)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(float[] buf,
                            int start,
                            int length)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(double[] buf,
                            int start,
                            int length)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(java.lang.String[] strings,
                            int start,
                            int length)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### writeBytes

          public void writeBytes(java.lang.String s)
                          throws java.io.IOException

      Specified by:
        `writeBytes` in interface `java.io.DataOutput`
      Throws:
        `java.io.IOException`

    - #### writeChars

          public void writeChars(java.lang.String s)
                          throws java.io.IOException

      Specified by:
        `writeChars` in interface `java.io.DataOutput`
      Throws:
        `java.io.IOException`

    - #### writeUTF

          public void writeUTF(java.lang.String str)
                        throws java.io.IOException

      Specified by:
        `writeUTF` in interface `java.io.DataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(byte[] buf)
                     throws java.io.IOException

      Specified by:
        `write` in interface `java.io.DataOutput`
      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(boolean[] buf)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(short[] buf)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(char[] buf)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(int[] buf)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(long[] buf)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(float[] buf)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(double[] buf)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### write

          public void write(java.lang.String[] strings)
                     throws java.io.IOException

      Specified by:
        `write` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`

    - #### writeArray

          public void writeArray(java.lang.Object o)
                          throws java.io.IOException

      Specified by:
        `writeArray` in interface `nom.tam.util.ArrayDataOutput`
      Throws:
        `java.io.IOException`