uk.ac.starlink.fits
Class AbstractArrayDataIO

java.lang.Object
  extended by 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: Consult the BufferedFile implementation for more details.

Since:
5 Jan 2007

Constructor Summary
AbstractArrayDataIO()
           
 
Method Summary
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

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
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