ГлавнаяНеобходимые приложенияНастройка приложенийГлавный классВысокоуровневое программированиеНизкоуровневое программированиеФайл манифестаСохранения. Работа с RecordStoreРабота с таймеромПолезные ссылкиОб автореСайт ФПМиКТСтуденческий сайт
Сайт о Java ME

Сохранения. Работа с RecordStore

Научимся теперь сохранять информацию, накопившуюся в приложении в процессе работы. Эти действия будут делаться через класс RecordStore.

При создании записи, хранилище присваивает ей уникальный целочисленный идентификатор (record ID). Нумерация записей начинается с единицы. При удалении записи оставшиеся элементы не перенумеровываются.

При создании хранилища необходимо дать ему какое-нибудь имя. Имя может содержать от 1 до 32 unicode символов и должно быть уникально внутри мидлета, создавшего хранилище. В MIDP 2.0 возможно чтение хранилища из стороннего приложения, но мы эту ситуацию рассматривать не будем.

Список хранилищ можно получить с помощью метода RecordStore.listRecordStores(). Этот статический метод возвращает массив строк, каждая из которых является именем принадлежащего мидлету хранилища. Если не создано ни одного хранилища, возвращается null.

Для открытия хранилища необходимо воспользоваться static-методом RecordStore openRecordStore(String recordStoreName, boolean createIfNecessary). Он возвращает ссылку на открытое хранилище. Параметр recordStoreName является именем открываемого хранилища, параметр createIfNecessary показывает, будет ли создано хранилище, если оно не существует.

Закрытие хранилища осуществляется методом createIfNecessary().

Метод getNumRecords() возвращает количество записей в хранилище.

Добавление записей осуществляется методом int addRecord(byte[] data, int offset, int numBytes). Он возвращает индекс сохраненной записи. Параметр data[] - массив из байт, сохраняемый с позиции offset длиной numBytes. Вот как можо сохранить в RecordStore число:
int num=100;
String s=num + "";
recordStore.addRecord(s.getBytes(), 0, s.length());
Для чтения записи с индексом recordID с помощью метода getRecord(int recordID). Он возвращает массив из байт.
Второй вариант, getRecord(int recordID, byte[] data, int offset) записывает запись с номером recordID в созданный массив data длиной offset.
Для определения длины записи с номером recordID воспользуйтесь методом int getRecordSize(int recordID).
Вот как, например, можно считать из RecordStore число
String record(int n) throws RecordStoreException{
	byte[] byteInputData;
	byteInputData = new byte[recordStore.getRecordSize(n)];
	int length = recordStore.getRecord(n, byteInputData, 0);
	return new String(byteInputData, 0, length);
}
...
int num=Integer.parseInt(record(1));
Для удаления записи воспользуйтесь методом void deleteRecord(int recordID).

static-методом RecordStore.deleteRecordStore(String name) можно удалить все хранилище целиком. Хранилище нельзя удалить, пока оно открыто.

int getSize() - возвращает размер хранилища в байтах.
int getSizeAvailable() - возвращает количество оставшихся байтов, отведенных под хранилище
Назад	Далее