| |
// Извлекаем из файла индексов смещение записи
// в файле данных
idxFilePointer = idx.readLong();
// Выполняем позиционирование на нужную запись
// в файле данных
dat.seek(idxFilePointer);
// Извлекаем поля записи
str = dat.readLine();
account = new Integer(dat.readInt());
// Объединяем значения полей в текстовую строку
sRecord = new String("> " + account + ", " + str);
}
catch(Exception ioe)
{
System.out.println(ioe.toString());
}
// Возвращаем извлеченную запись
return sRecord;
}
}
Описание исходных текстов
Для работы с базой данных мы создали класс SimpleDBMS, определив в нем
конструктор, методы для добавления записей, извлечения записей по их
порядковому номеру, а также метод для закрытия базы данных.
Метод main
Сразу после запуска метод main приложения DirectFileAccess создает базу
данных, передавая конструктору имена файла индекса dbtest.idx и файла данных
dbtest.dat:
SimpleDBMS db = new SimpleDBMS("dbtest.idx", "dbtest.dat");
После этого с помощью метода AddRecord, определенного в классе SimpleDBMS, в
базу добавляются три записи, состоящие из текстового и числового полей:
db.AddRecord("Ivanov", 1000);
db.AddRecord("Petrov", 2000);
db.AddRecord("Sidoroff", 3000);
Сразу после добавления записей приложение извлекает три записи с номерами 2,
1 и 0, вызывая для этого метод GetRecordByNumber, также определенный в классе
SimpleDBMS:
System.out.println(db.GetRecordByNumber(2));
System.out.println(db.GetRecordByNumber(1));
System.out.println(db.GetRecordByNumber(0));
Извлеченные записи отображаются на системной консоли.
После завершения работы с базой данных она закрывается методом close из
класса SimpleDBMS:
db.close();
Класс SimpleDBMS
Рассмотрим теперь класс SimpleDBMS.
В этом классе определено три поля с именами idx, dat и idxFilePointer, а
также три метода.
Поля класса SimpleDBMS
Поля idx dat являются объектами класса RandomAccessFile и представляют собой,
соответственно, ссылки на файл индекса и файл данных. Поле idxFilePointer типа
long используется как рабочее и хранит текущее смещение в файле.
Конструктор класса SimpleDBMS
Конструктор класса SimpleDBMS выглядит достаточно просто. Все, что он делает,
- это создает два объекта класса RandomAccessFile, соответственно, для индекса
и данных:
idx = new RandomAccessFile(IndexFile, "rw");
dat = new RandomAccessFile(DataFile, "rw");
Так как в качестве второго параметра конструктору класа RandomAccessFile
передается строка "rw", файлы открываются и для чтения, и для записи.
Метод close
Метод close закрывает файлы индекса и данных, вызывая метод close из класса
RandomAccessFile:
idx.close();
dat.close();
Метод AddRecord
Метод AddRecord добавляет новую запись в конец файла данных, а смещение это
|
|