|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object de.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 MappedByteBuffer |
map
|
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,
boolean writable)
Constructor to open an existing file. |
|
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. |
void |
ensureSize(int size)
Ensure that the file can fit the given number of records. |
ByteBuffer |
getExtraHeader()
Read the extra header data. |
protected int |
getExtraHeaderSize()
Return the size of the extra header. |
File |
getFilename()
Get the file name. |
int |
getNumRecords()
Get number of records in file. |
ByteBuffer |
getRecordBuffer(int index)
Get a record buffer |
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. |
private void |
mapArray()
(Re-) map the data array. |
static int |
mixMagic(int magic1,
int magic2)
Mix two magic numbers into one, to obtain a combined magic. |
void |
resizeFile(int newsize)
Resize file to the intended size |
private void |
validateHeader(boolean validateRecordSize)
Validates the header and throws an IOException if the header is invalid. |
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 final RandomAccessFile file
private FileLock lock
private boolean writable
private MappedByteBuffer map
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
- on IO errorspublic 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
- on IO errorspublic OnDiskArray(File filename, int magicseed, int extraheadersize, boolean writable) throws IOException
getRecordsize()
filename
- File name to be opened.magicseed
- Magic number to derive real magic from.extraheadersize
- header size NOT including the internal headerwritable
- flag to open the file writable
IOException
- on IO errorsMethod Detail |
---|
private void mapArray() throws IOException
IOException
- on mapping error.private void validateHeader(boolean validateRecordSize) throws IOException
validateRecordSize
-
IOException
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
- on IO errorspublic ByteBuffer getRecordBuffer(int index) throws IOException
index
- Record index
IOException
- on IO errorsprotected int getExtraHeaderSize()
public ByteBuffer getExtraHeader() throws IOException
IOException
- on IO errorsprotected int getRecordsize()
public File getFilename()
public boolean isWritable()
public void close() throws IOException
IOException
- on IO errorspublic int getNumRecords()
public void ensureSize(int size) throws IOException
size
- Size
IOException
|
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |