• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Tim Cooke
  • paul wheaton
  • Jeanne Boyarsky
  • Ron McLeod
Sheriffs:
  • Paul Clapham
  • Liutauras Vilda
  • Devaka Cooray
Saloon Keepers:
  • Tim Holloway
  • Roland Mueller
Bartenders:

Can someone explain this in better english for me ?

 
Ranch Hand
Posts: 147
IntelliJ IDE Java Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Start of file
4 byte numeric, magic cookie value. Identifies this as a data file
4 byte numeric, total overall length in bytes of each record
2 byte numeric, number of fields in each record

Schema description section.
Repeated for each field in a record:
2 byte numeric, length in bytes of field name
n bytes (defined by previous entry), field name
2 byte numeric, field length in bytes
end of repeating block

Data section.
Repeat to end of file:
1 byte "deleted" flag. 0 implies valid record, 1 implies deleted record
Record containing fields in order specified in schema section, no separators between fields, each field fixed length at maximum specified in schema information

End of file


I understand the 1st 4 bytes of the file and have identified my magic number. It then says there is another 4 bytes that give the length in bytes of each record. Now is that the bytes from number 4-8? Surely it cant be the same value as the magic cookie?

Also
In the schema section it says that n bytes defined be previous entry. Previous entry what? Length?

I feel very confused.
 
Yucca Nel
Ranch Hand
Posts: 147
IntelliJ IDE Java Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I would just like to add that i used randomAccessFile with skipBytes() and readInt to get these values
Magic cookie = 513
The readInt method from bytes 4-8 return 182 does that mean that 182 is the length of each record?

Edit *** I just found out that these values match the supplied information. Should I therefore be using a class that calculates the record length for each contractor or can I use my own created class that calculated the record length with the supplied information? I dont want to add any reundant code to this assignment.
 
Bartender
Posts: 3648
16
Android Mac OS X Firefox Browser Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi Yucca, I had the exact problem you did when I started my assignment. Let see if I can help:
Since you use RandomAccessFile to read/write your data. Then 4 bytes= integer, 2 bytes=short right? Then right off the bat when you first read your data file your should able to do this given raf is the RandomAccessFile:



Reading the data section uses the same idea - readByte to read the delete flag, for loop to read each field's value. Oh to get a String you can use new String(byte[]) constructor.

Now of course you don't neccessarily need to read the header everytime. That's why the pointer variable enables you to use the raf.seek() method to jump around. Another decision to make is how many time to read the magic cookie value.

Hope this helps.
 
Don't get me started about those stupid light bulbs.
reply
    Bookmark Topic Watch Topic
  • New Topic