Disk Indexer Database Format Version 1

The following table illustrates the database format used by Disk Indexer. Note that the blob data page do not need to be placed in any particular area, like the table might suggest.

Page Number Content
0 -> First Page
1 -> Page Header
2 Node 0
... Node 1
... ... 
X -> Page Header
X+1 Blob Data
...
Disk Indexer Database Format Version 1, as seen in the database file

Each page has 1kB. Because Disk Indexer was designed in Java, all variables are signed in two's complement and represented in big endian.

First Page

This is the structure used for page 0.

Size (Bytes) Description
4 Database Version (Integer)
8 Database Creation Date (Milliseconds since January 1, 1970 UTC)
4 Root Child Page Pointer (ie.: Real First Page)
4 First Free Page (-1 = End of File, -2 = Unknown)

Page Header

This is the header structure used after page 0.

Size (Bytes) Description
4 Primary Pointer (First Pointer of this Family of Page, -2 = Free Page)
4 Parent Pointer (Page where Parent Resides)
4 Previous Brother Pointer
4 Next Brother Pointer
2 Space Used (Bytes Including Header)
2 Index of the First Entry in this Page
2 Amount of Entries in this Page (-1 = blob)

Data Node

Size (Bytes) Description
2 + variable Filename (2 first bytes indicates length of the rest)
2 + variable Description
2 + variable More Data (Currently Used for ID3 Tags)
1 Type, ASCII (d = Directory, z = Zip, f = File, c = Container, v = Disk Volume)
8 Length of File (Bytes)
8 Last Modified Date of File (Milliseconds since January 1, 1970 UTC)
4 Image Resolution (-1 x -1 = No Image)
4 Child Pointer (to First Page, which is the Primary Pointer)
4 Blob Pointer (Currently Used for Thumbnails)
1 Previous Scan Options Used for a Disk Volume
(Bit 0 = Scan Zip, Bit 1 = Scan ID3Tag, Bit 2 = Scan GIF/JPG)