谈谈J2ME的几个重要的功能

豆豆网   技术应用频道   2008年01月10日  【字号: 收藏本文

内容摘要:J2ME记录管理系统 ( RMS )允许数据流被储存并且在一个记录基础上访问数据。由应用程序开发者把每个记录解析到字段水平。RMS程序包内部的接口支持一个应用程序定义的基础上的比较与检索功能。

  三、使用StreamConnection存取数据

  StreamConnection接口定义了一个流连接必须有的最小的功能。现在我们对AddressBookMIDLet应用程序做出修改:

  删除 AddressBookMIDLet()构造程序中的 dbAddress.addAddress()方法调用,这个方法调用可以删除,因为新的程序没有必要自己动手向数据库中添加数据,新的程序将使用 J2ME的网络功能取回储存在网上的地址。

  把特定的连接代码添加到 AddressDB构造程序中。这两个例子中的特定连接代码只是简单地通过 TCP/IP取回地址并手动地把每个地址添加到通讯簿中。

StreamConnection connStream = null;InputStream inStream = null;
byte[] b = new byte[255];
String address, name;
int commalocation = 0;
try {
connStream = (StreamConnection)
Connector.open("http://localhost/addressbook.txt");
inStream = connStream.openInputStream();
int count = inStream.read(b);
address = new String(b);
address = address.trim();
StringTokenizer st = new StringTokenizer(address, "");
while (st.hasMoreTokens()) {
address = st.nextToken();
commalocation = address.indexOf(',');
name = address.substring(0, commalocation);
address = address.substring(commalocation + 1);
addAddress(name, address);
}
}
catch (IOException e) {
System.out.println(e);
e.printStackTrace();
}

  上面的代码能够工作,但是有点小问题。必须限定字节数组长度为255,因为 StreamConnection接口不能估计下载数据的大小。为此,我可以利用 ContentConnection接口以及很好使用的getLength()方法。

  另外一个问题就是 J2ME中缺少 J2SE的 java.util.StringTokenizer类。虽然可以自己写字符串分析器类,但是也可以从网上找到StringTokenizer类。

  四、使用ContentConnection存取数据

  ContentConnection接口与StreamConnection接口作用差不多,但是它提供了更多有用的方法。ContentConnection接口与 StreamConnection接口作用差不多,但是它提供了更多有用的方法。其中有一个非常有用的方法 getLength(),它返回内容的长度,为了使用这个方法,需要声明一个 ContentConnection变量:

  ContentConnection connStream = null;

  我将把字节数组移进 try{}子句中,并改变另外三项:

  1. 把 Connector.open()方法的输出结果强制转化成一个 ContentConnection。

  2. 取得 ContentConnection后,调用 c.getLength()来取回这个数据的长度。

  3. 一旦取得内容的长度,就可以使用这个长度动态地创建一个字节数组。

  除此之外,其他的部分与原来的程序相同。

ConnStream = (ContentConnection)
Connector.open("http://localhost/addressbook.txt");
int len = (int)connStream.getLength();
byte[] b = new byte[len];

责编:豆豆技术应用

正在加载评论...