|
|
|||||||||||||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.lmu.ifi.dbs.elki.persistent.OnDiskArray
public class OnDiskArray
On Disc Array storage for records of a given size. This can be used to implement various fixed size record-based data structures. The file format is designed to have a fixed-size header followed by the actual data.
Field Summary | |
---|---|
private RandomAccessFile |
file
Random Access File object. |
private File |
filename
File name. |
private static int |
HEADER_POS_SIZE
Position of file size (in records) |
private int |
headersize
Size of the header in the file. |
private static int |
INTERNAL_HEADER_SIZE
Size of the classes header size. |
private FileLock |
lock
Lock for the file that will be kept while writing. |
protected int |
magic
Magic number used to identify files |
private int |
numrecs
Number of records in the file. |
private int |
recordsize
Size of the records in the file. |
private static long |
serialVersionUID
Serial version. |
private boolean |
writable
Writable or read-only object |
Constructor Summary | |
---|---|
OnDiskArray(File filename,
int magicseed,
int extraheadersize,
int recordsize,
boolean writable)
Constructor to open an existing file. |
|
OnDiskArray(File filename,
int magicseed,
int extraheadersize,
int recordsize,
int initialsize)
Constructor to write a new file. |
Method Summary | |
---|---|
void |
close()
Explicitly close the file. |
protected int |
getExtraHeaderSize()
Return the size of the extra header. |
File |
getFilename()
Get the file name. |
int |
getNumRecords()
Get number of records in file. |
protected int |
getRecordsize()
Get the size of a single record. |
private long |
indexToFileposition(long index)
Compute file position from index number |
boolean |
isWritable()
Check if the file is writable. |
static int |
mixMagic(int magic1,
int magic2)
Mix two magic numbers into one, to obtain a combined magic. |
byte[] |
readExtraHeader()
Read the extra header data. |
byte[] |
readRecord(int index)
Read a single record from the file. |
void |
resizeFile(int newsize)
Resize file to the intended size |
void |
writeExtraHeader(byte[] buf)
Write the extra header data. |
void |
writeRecord(int index,
byte[] data)
Write a single record. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static final long serialVersionUID
protected int magic
private int headersize
private int recordsize
private int numrecs
private File filename
private RandomAccessFile file
private FileLock lock
private boolean writable
private static final int INTERNAL_HEADER_SIZE
private static final int HEADER_POS_SIZE
Constructor Detail |
---|
public OnDiskArray(File filename, int magicseed, int extraheadersize, int recordsize, int initialsize) throws IOException
filename
- File name to be opened.magicseed
- Magic number to derive real magic from.extraheadersize
- header size NOT including the internal headerrecordsize
- Record sizeinitialsize
- Initial file size (in records)
IOException
public OnDiskArray(File filename, int magicseed, int extraheadersize, int recordsize, boolean writable) throws IOException
filename
- File name to be opened.magicseed
- Magic number to derive real magic from.extraheadersize
- header size NOT including the internal headerrecordsize
- Record sizewritable
- flag to open the file writable
IOException
Method Detail |
---|
public static final int mixMagic(int magic1, int magic2)
magic1
- Magic number to mix.magic2
- Magic number to mix.
private long indexToFileposition(long index)
index
- Index offset
public void resizeFile(int newsize) throws IOException
newsize
- New file size.
IOException
public byte[] readRecord(int index) throws IOException
index
- Record index
IOException
public void writeRecord(int index, byte[] data) throws IOException
index
- Record index.data
- Array with record data. MUST have appropriate size.
IOException
protected int getExtraHeaderSize()
public byte[] readExtraHeader() throws IOException
IOException
public void writeExtraHeader(byte[] buf) throws IOException
buf
- Header data.
IOException
protected int getRecordsize()
public File getFilename()
public boolean isWritable()
public void close() throws IOException
IOException
public int getNumRecords()
|
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |