uk.ac.starlink.fits
Class MultiMappedFile

java.lang.Object
  extended by uk.ac.starlink.fits.AbstractArrayDataIO
      extended by uk.ac.starlink.fits.MultiMappedFile
All Implemented Interfaces:
java.io.DataInput, java.io.DataOutput, nom.tam.util.ArrayDataInput, nom.tam.util.ArrayDataOutput, nom.tam.util.RandomAccess

public class MultiMappedFile
extends AbstractArrayDataIO
implements nom.tam.util.RandomAccess

ArrayDataIO implementation which works by mapping but is capable of splitting a file up into multiple mapped sections. This will be necessary if it's larger than Integer.MAX_VALUE bytes, though note that doing this is only going to be a good idea on a 64-bit OS.

Since:
9 Jan 2007

Constructor Summary
MultiMappedFile(java.nio.channels.FileChannel chan, java.nio.channels.FileChannel.MapMode mode, int blockBytes)
          Constructs a MultiMappedFile from a channel.
MultiMappedFile(java.io.File file, java.nio.channels.FileChannel.MapMode mode, int blockBytes)
          Constructs a MultiMappedFile from a file.
 
Method Summary
 void close()
           
 void flush()
           
protected  byte get()
          Reads one byte from the current position.
protected  void get(byte[] buf, int offset, int length)
          Reads bytes into a buffer from the current position.
 long getFilePointer()
           
 long length()
          Returns the size of this buffer.
protected  void put(byte b)
          Writes a single byte at the current position.
protected  void put(byte[] buf, int offset, int length)
          Writes bytes from a buffer to the current position.
protected  long remaining()
          Returns the number of bytes remaining between the current position and the end of the file.
 void seek(long offsetFromStart)
           
 long skip(long nskip)
           
 int skipBytes(int toSkip)
           
 
Methods inherited from class uk.ac.starlink.fits.AbstractArrayDataIO
read, read, read, read, read, read, read, read, read, read, read, read, read, read, read, read, readArray, readBoolean, readByte, readChar, readDouble, readFloat, readFully, readFully, readInt, readLine, readLong, readShort, readUnsignedByte, readUnsignedShort, readUTF, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, write, writeArray, writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeDouble, writeFloat, writeInt, writeLong, writeShort, writeUTF
 
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
read, read, read, read, read, read, read, read, read, read, read, read, read, read, read, read, readArray
 
Methods inherited from interface java.io.DataInput
readBoolean, readByte, readChar, readDouble, readFloat, readFully, readFully, readInt, readLine, readLong, readShort, readUnsignedByte, readUnsignedShort, readUTF
 

Constructor Detail

MultiMappedFile

public MultiMappedFile(java.nio.channels.FileChannel chan,
                       java.nio.channels.FileChannel.MapMode mode,
                       int blockBytes)
                throws java.io.IOException
Constructs a MultiMappedFile from a channel.

Parameters:
chan - file channel
mode - mapping mode
blockBytes - number of bytes per mapped block (though the final one may have fewer)
Throws:
java.io.IOException

MultiMappedFile

public MultiMappedFile(java.io.File file,
                       java.nio.channels.FileChannel.MapMode mode,
                       int blockBytes)
                throws java.io.IOException
Constructs a MultiMappedFile from a file.

Parameters:
file - file
mode - mapping mode
blockBytes - number of bytes per mapped block (though the final one may have fewer)
Throws:
java.io.IOException
Method Detail

seek

public void seek(long offsetFromStart)
          throws java.io.IOException
Specified by:
seek in interface nom.tam.util.RandomAccess
Throws:
java.io.IOException

skip

public long skip(long nskip)
          throws java.io.IOException
Specified by:
skip in interface nom.tam.util.ArrayDataInput
Throws:
java.io.IOException

getFilePointer

public long getFilePointer()
Specified by:
getFilePointer in interface nom.tam.util.RandomAccess

skipBytes

public int skipBytes(int toSkip)
              throws java.io.IOException
Specified by:
skipBytes in interface java.io.DataInput
Throws:
java.io.IOException

get

protected byte get()
            throws java.io.IOException
Description copied from class: AbstractArrayDataIO
Reads one byte from the current position.

Specified by:
get in class AbstractArrayDataIO
Returns:
next byte
Throws:
java.io.IOException

get

protected void get(byte[] buf,
                   int offset,
                   int length)
            throws java.io.IOException
Description copied from class: AbstractArrayDataIO
Reads bytes into a buffer from the current position.

Specified by:
get in class AbstractArrayDataIO
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 void put(byte b)
            throws java.io.IOException
Description copied from class: AbstractArrayDataIO
Writes a single byte at the current position.

Specified by:
put in class AbstractArrayDataIO
Parameters:
b - output byte
Throws:
java.io.IOException

put

protected void put(byte[] buf,
                   int offset,
                   int length)
            throws java.io.IOException
Description copied from class: AbstractArrayDataIO
Writes bytes from a buffer to the current position.

Specified by:
put in class AbstractArrayDataIO
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 long length()
Description copied from class: AbstractArrayDataIO
Returns the size of this buffer. May be -1 if not known/unlimited.

Specified by:
length in class AbstractArrayDataIO
Returns:
length or -1

remaining

protected long remaining()
Description copied from class: AbstractArrayDataIO
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;

Specified by:
remaining in class AbstractArrayDataIO
Returns:
number of bytes left in file

close

public void close()
           throws java.io.IOException
Specified by:
close in interface nom.tam.util.ArrayDataInput
Specified by:
close in interface nom.tam.util.ArrayDataOutput
Throws:
java.io.IOException

flush

public void flush()
Specified by:
flush in interface nom.tam.util.ArrayDataOutput

Copyright © 2004 CLRC: Central Laboratory of the Research Councils. All rights reserved.