Package uk.ac.starlink.fits
Class AbstractArrayDataIO
- java.lang.Object
-
- uk.ac.starlink.fits.AbstractArrayDataIO
-
- All Implemented Interfaces:
java.io.Closeable
,java.io.DataInput
,java.io.DataOutput
,java.lang.AutoCloseable
,nom.tam.util.ArrayDataInput
,nom.tam.util.ArrayDataOutput
,nom.tam.util.FitsIO
- 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 anom.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 theBufferedFile
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
BufferedFile
implementation for more details.- Since:
- 5 Jan 2007
- Author:
- Mark Taylor, Tom McGlynn
-
-
Field Summary
-
Fields inherited from interface nom.tam.util.FitsIO
BITS_OF_1_BYTE, BITS_OF_2_BYTES, BITS_OF_3_BYTES, BITS_OF_4_BYTES, BITS_OF_5_BYTES, BITS_OF_6_BYTES, BITS_OF_7_BYTES, BYTE_1_OF_LONG_MASK, BYTE_2_OF_LONG_MASK, BYTE_3_OF_LONG_MASK, BYTE_4_OF_LONG_MASK, BYTE_MASK, BYTES_IN_BOOLEAN, BYTES_IN_BYTE, BYTES_IN_CHAR, BYTES_IN_DOUBLE, BYTES_IN_FLOAT, BYTES_IN_INTEGER, BYTES_IN_LONG, BYTES_IN_SHORT, DEFAULT_BUFFER_SIZE, HIGH_INTEGER_MASK, INTEGER_MASK, SHORT_MASK, SHORT_OF_LONG_MASK
-
-
Constructor Summary
Constructors Constructor Description AbstractArrayDataIO()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method 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.seeDataInputStream.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
-
-
-
-
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 bufferoffset
- offset of first byte inbuf
to be writtenlength
- maximum number of bytes to be written tobuf
- 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 bufferoffset
- offset of first byte inbuf
to be readlength
- number of bytes frombuf
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 returnLong.MAX_VALUE
;- Returns:
- number of bytes left in file
-
readBoolean
public boolean readBoolean() throws java.io.IOException
- Specified by:
readBoolean
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readByte
public byte readByte() throws java.io.IOException
- Specified by:
readByte
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readShort
public short readShort() throws java.io.IOException
- Specified by:
readShort
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readChar
public char readChar() throws java.io.IOException
- Specified by:
readChar
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readInt
public int readInt() throws java.io.IOException
- Specified by:
readInt
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readLong
public long readLong() throws java.io.IOException
- Specified by:
readLong
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readFloat
public float readFloat() throws java.io.IOException
- Specified by:
readFloat
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readDouble
public double readDouble() throws java.io.IOException
- Specified by:
readDouble
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readUnsignedByte
public int readUnsignedByte() throws java.io.IOException
- Specified by:
readUnsignedByte
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readUnsignedShort
public int readUnsignedShort() throws java.io.IOException
- Specified by:
readUnsignedShort
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readUTF
public java.lang.String readUTF() throws java.io.IOException
- Specified by:
readUTF
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readLine
@Deprecated public java.lang.String readLine() throws java.io.IOException
Deprecated.seeDataInputStream.readLine()
Not implemented - this method is deprecated in any case.- Specified by:
readLine
in interfacejava.io.DataInput
- Throws:
java.lang.UnsupportedOperationException
- alwaysjava.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 interfacenom.tam.util.ArrayDataInput
- Specified by:
readFully
in interfacejava.io.DataInput
- Parameters:
buf
- the byte buffer into which to readstart
- the index in buf at which to start putting byteslen
- the number of bytes which must be read- Throws:
java.io.EOFException
- if there are fewer than len bytes leftjava.io.IOException
-
read
public int read(byte[] buf, int start, int length) throws java.io.IOException
- Specified by:
read
in interfacenom.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 interfacenom.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 interfacenom.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 interfacenom.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 interfacenom.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 interfacenom.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 interfacenom.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 interfacenom.tam.util.ArrayDataInput
- Throws:
java.io.IOException
-
readFully
public void readFully(byte[] buf) throws java.io.IOException
- Specified by:
readFully
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
read
public int read(byte[] buf) throws java.io.IOException
- Specified by:
read
in interfacenom.tam.util.ArrayDataInput
- Throws:
java.io.IOException
-
read
public int read(boolean[] buf) throws java.io.IOException
- Specified by:
read
in interfacenom.tam.util.ArrayDataInput
- Throws:
java.io.IOException
-
read
public int read(short[] buf) throws java.io.IOException
- Specified by:
read
in interfacenom.tam.util.ArrayDataInput
- Throws:
java.io.IOException
-
read
public int read(char[] buf) throws java.io.IOException
- Specified by:
read
in interfacenom.tam.util.ArrayDataInput
- Throws:
java.io.IOException
-
read
public int read(int[] buf) throws java.io.IOException
- Specified by:
read
in interfacenom.tam.util.ArrayDataInput
- Throws:
java.io.IOException
-
read
public int read(long[] buf) throws java.io.IOException
- Specified by:
read
in interfacenom.tam.util.ArrayDataInput
- Throws:
java.io.IOException
-
read
public int read(float[] buf) throws java.io.IOException
- Specified by:
read
in interfacenom.tam.util.ArrayDataInput
- Throws:
java.io.IOException
-
read
public int read(double[] buf) throws java.io.IOException
- Specified by:
read
in interfacenom.tam.util.ArrayDataInput
- Throws:
java.io.IOException
-
readArray
public int readArray(java.lang.Object o) throws java.io.IOException
- Specified by:
readArray
in interfacenom.tam.util.ArrayDataInput
- Throws:
java.io.IOException
-
readLArray
public long readLArray(java.lang.Object o) throws java.io.IOException
- Specified by:
readLArray
in interfacenom.tam.util.ArrayDataInput
- Throws:
java.io.IOException
-
write
public void write(int val) throws java.io.IOException
- Specified by:
write
in interfacejava.io.DataOutput
- Throws:
java.io.IOException
-
writeBoolean
public void writeBoolean(boolean val) throws java.io.IOException
- Specified by:
writeBoolean
in interfacejava.io.DataOutput
- Throws:
java.io.IOException
-
writeByte
public void writeByte(int val) throws java.io.IOException
- Specified by:
writeByte
in interfacejava.io.DataOutput
- Throws:
java.io.IOException
-
writeShort
public void writeShort(int val) throws java.io.IOException
- Specified by:
writeShort
in interfacejava.io.DataOutput
- Throws:
java.io.IOException
-
writeChar
public void writeChar(int val) throws java.io.IOException
- Specified by:
writeChar
in interfacejava.io.DataOutput
- Throws:
java.io.IOException
-
writeInt
public void writeInt(int val) throws java.io.IOException
- Specified by:
writeInt
in interfacejava.io.DataOutput
- Throws:
java.io.IOException
-
writeLong
public void writeLong(long val) throws java.io.IOException
- Specified by:
writeLong
in interfacejava.io.DataOutput
- Throws:
java.io.IOException
-
writeFloat
public void writeFloat(float val) throws java.io.IOException
- Specified by:
writeFloat
in interfacejava.io.DataOutput
- Throws:
java.io.IOException
-
writeDouble
public void writeDouble(double val) throws java.io.IOException
- Specified by:
writeDouble
in interfacejava.io.DataOutput
- Throws:
java.io.IOException
-
write
public void write(byte[] buf, int start, int length) throws java.io.IOException
- Specified by:
write
in interfacejava.io.DataOutput
- Throws:
java.io.IOException
-
write
public void write(boolean[] buf, int start, int length) throws java.io.IOException
- Specified by:
write
in interfacenom.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 interfacenom.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 interfacenom.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 interfacenom.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 interfacenom.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 interfacenom.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 interfacenom.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 interfacenom.tam.util.ArrayDataOutput
- Throws:
java.io.IOException
-
writeBytes
public void writeBytes(java.lang.String s) throws java.io.IOException
- Specified by:
writeBytes
in interfacejava.io.DataOutput
- Throws:
java.io.IOException
-
writeChars
public void writeChars(java.lang.String s) throws java.io.IOException
- Specified by:
writeChars
in interfacejava.io.DataOutput
- Throws:
java.io.IOException
-
writeUTF
public void writeUTF(java.lang.String str) throws java.io.IOException
- Specified by:
writeUTF
in interfacejava.io.DataOutput
- Throws:
java.io.IOException
-
write
public void write(byte[] buf) throws java.io.IOException
- Specified by:
write
in interfacejava.io.DataOutput
- Throws:
java.io.IOException
-
write
public void write(boolean[] buf) throws java.io.IOException
- Specified by:
write
in interfacenom.tam.util.ArrayDataOutput
- Throws:
java.io.IOException
-
write
public void write(short[] buf) throws java.io.IOException
- Specified by:
write
in interfacenom.tam.util.ArrayDataOutput
- Throws:
java.io.IOException
-
write
public void write(char[] buf) throws java.io.IOException
- Specified by:
write
in interfacenom.tam.util.ArrayDataOutput
- Throws:
java.io.IOException
-
write
public void write(int[] buf) throws java.io.IOException
- Specified by:
write
in interfacenom.tam.util.ArrayDataOutput
- Throws:
java.io.IOException
-
write
public void write(long[] buf) throws java.io.IOException
- Specified by:
write
in interfacenom.tam.util.ArrayDataOutput
- Throws:
java.io.IOException
-
write
public void write(float[] buf) throws java.io.IOException
- Specified by:
write
in interfacenom.tam.util.ArrayDataOutput
- Throws:
java.io.IOException
-
write
public void write(double[] buf) throws java.io.IOException
- Specified by:
write
in interfacenom.tam.util.ArrayDataOutput
- Throws:
java.io.IOException
-
write
public void write(java.lang.String[] strings) throws java.io.IOException
- Specified by:
write
in interfacenom.tam.util.ArrayDataOutput
- Throws:
java.io.IOException
-
writeArray
public void writeArray(java.lang.Object o) throws java.io.IOException
- Specified by:
writeArray
in interfacenom.tam.util.ArrayDataOutput
- Throws:
java.io.IOException
-
-