Re: Sample code for random access file io program
GreenMountainBoy wrote:
The record structure is
public Employee
{
int iRecordNumber;
String sName;
double dSalary;
}
First a quick question, are you absolutely sure it needs to be record
based? Could it not be textbased? this is much easier in java than
records E.g.
recordnum=1024
sname=xxxxxx xxxxxxxx
salary=3.14
In any case, what you probably should do is use a byte array, set up for
the exact size of the record, then for each employee oject you add a
method that returns a byte array representation of the object. then you
use a list iterator to iterate through the list and give you each byte
array representation in the list.
e.g. record format in BigEndian format, with \0 based padding
num (4 bytes) | sname (25 bytes) | salary (8 bytes)
public interface Recordformat {
public byte[] toRecord();
}
public class Employee implements RecordFormat {
...
public byte[] toRecord() {
}
I need to be able to create these records from the keyboard, then write
them to disk, and then be able to read one based on a iRecordNumber.
Part of the problem is that the Name string is variable length and I
need it to be a fixed 25 characters - I have found that character
arrays won't function in many places where a string is called for..
Why is that?
I need to be able to 1) add new items, 2) list all items, 3) query an
item based on its record number, 4) update a record (salary only), 5)
delete an item.
When it comes to the file access you could use java.io.RandomAccessFile
to make a filemanager object which traverses the file in record size
chunks, both backwards and forwards, and allows you to save both single
records and a list of records. You can delete a record by \0 padding it,
or just rewrite the entire file with the updated list.
tom