如何使用代号为一个存储?(How to use Codename one Storage?)

2019-06-25 22:29发布

我想我的端口LWUIT应用代号一个 。

我已经使用在LWUIT RMS,现在很明显,我有这个转换到存储。

我不明白的存储类是如何工作的一个代号和代号一个文档具有一无所知无论是。

1)什么是存储文件的结构?

- >在J2ME RecordStore ,你必须聚集在一起像一个表中的记录。 每一行,对应的记录。 每个记录都有一个唯一的记录ID,您可以用此记录ID访问记录。 每条记录可以存储在它的一些数据。

请问这个地图存储类?

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)。 ; 但是存在一个代号初始化没有!。 如何打开代号一个存储?

3)如果我尝试打开一个不存在的存储文件时,会发生什么(RMS给出了一个例外)?

Answer 1:

考虑存储的最简单方法是作为平面文件系统(不含目录/文件夹)。

当RMS上运行此文件系统抽象映射到数据库RMS无缝你。

注意init()用于存储在一个代号不再需要,在LWUIT只进行基本的初始化和名称通常被忽略了。

存储类有几种方法:

InputStream createInputStream(String name)

创建一个输入流,以给定的存储源文件

OutputStream    createOutputStream(String name)

创建输出流至存储与给定名称

boolean     exists(String name)

如果给定存储文件存在,则返回true

String[]    listEntries()

列出存储文件的名称

您可以使用这些只是存储,并检查是否存在的数据。 然而,你也可以在存储复杂的对象存储,而不通过使用这两种方法使用的输入/输出流:

 Object     readObject(String name)

读取存储的对象,如果对象不存在返回null

 boolean    writeObject(String name, Object o)

写入给定的对象到存储假设它是一个外部化类型或支持的类型之一

所以,模拟类似的byte []存储,你可以这样做:

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


文章来源: How to use Codename one Storage?