2012-06-30 2 views
3

Я пытаюсь доставить приложение LWUIT до Codename one.Как использовать Codename one Storage?

Я использовал RMS в LWUIT, и теперь, очевидно, мне нужно преобразовать это в Storage.

Я не понимаю, как класс Storage работает в Codename, а в документации для кодового имени ничего нет.

1) Какова структура файла хранилища?

-> В J2ME RecordStore у вас есть записи, сгруппированные вместе, как в таблице. Каждая строка соответствует записи. Каждая запись имеет уникальный идентификатор записи, и вы можете получить доступ к записи с этим идентификатором записи. В каждой записи могут храниться некоторые данные.

Как эта карта относится к классу хранения?

2) Я хочу сохранить некоторые записи в своем хранилище, как это сделать?

В документации сказано:

static Storage getInstance() 
      Returns the storage instance or null if the storage wasn't initialized using a call to init(String) first. 

-> В LWUIT это было что-то вроде Storage.init (storageName). ; Однако в кодовом имени нет init. Как открыть хранилище в Codename?

3) Если я попытаюсь открыть файл хранилища, который не существует, что произойдет (RMS дает исключение)?

ответ

6

Самый простой способ думать о хранении - это как плоская файловая система (без каталогов/папок).

При выполнении над RMS эта файловая система абстрагируется для вас в базу данных RMS.

Обратите внимание, что init() для хранения в Codename. Больше не требуется. В LWUIT выполняется только базовая инициализация, и имя обычно игнорируется.

класса

Запоминающего устройства имеет несколько методов:

InputStream createInputStream(String name) 

Создает входной поток для данного хранения исходного файла

OutputStream createOutputStream(String name) 

Создает выходной поток в хранилище с указанным именем

boolean  exists(String name) 

Возвращает true, если данный файл хранения существует

String[] listEntries() 

перечислены имена файлов для хранения

Вы можете использовать их, чтобы просто хранить и проверить, существует ли данные.Однако вы можете также хранить сложные объекты хранения без использования входных/выходных потоков с помощью этих двух методов:

Object  readObject(String name) 

Считывает объект из хранилища, возвращает нулевое значение, если объект не существует

boolean writeObject(String name, Object o) 

Записывает объект хранения при условии, что это Externalizable типа или один из поддерживаемых типов

Так имитируют что-то вроде байт [] хранения вы можете сделать что-то вроде этого:

Vector p = new Vector(); 
byte[] myData = ...; 
p.addElement(myData); 
p.addElement(additionalData); 
Storage.getInstance().writeObject("myStore", p); 

Тогда просто читать как:

Vector p = (Vector)Storage.getInstance().read("myStore"); 
// p will be null if nothing was written 
+0

Отлично! Спасибо. – Nikhil