这到底是什么东东?

yadang 2002-03-15 09:05:32
J2ME的API中有个RecordStore类.
据说该类可以把信息自动持久化在MIDlet 中,但我搜索了本地全部的硬盘,也没找到关于它的一点踪影。
J2ME中到底该类是怎么存储的??有用过该类的高手吗?
...全文
52 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldgs 2002-03-15
  • 打赏
  • 举报
回复
A record store is a collection of records, and a record is basically a byte array of arbitrary data. The size of the byte array can vary for each record. The RMS doesn't understand the contents of a record and doesn't place any restrictions on what goes into the record. The RMS does do some rudimentary bookkeeping, however, such as assigning each record a unique identifier that is valid for the lifetime of the record store.
****************************************************************
a example :

import java.io.*;
import javax.microedition.midlet.*;
import javax.microedition.rms.*;

public class TestStore extends MIDlet {
static final String DBNAME = "mydata";
public TestStore() {
RecordStore rs = null;
// Data is persistent across MIDlet invocations.
// So, first clear out the old record store...
try {
RecordStore.deleteRecordStore( DBNAME );
}
catch( Exception e ){
// ignore any errors...
}
// Now create a new one and dump
// each element out....
try {
rs = RecordStore.openRecordStore( DBNAME,true );
byte[] data1 = "Here is the first
record".getBytes();
byte[] data2 = "And here is the
second".getBytes();
byte[] data3 = "And then the
third".getBytes();
data3[0] = 0;
data3[data3.length-1] = (byte) -1;
rs.addRecord( data1, 0, data1.length );
rs.addRecord( data2, 0, data2.length );
rs.addRecord( data3, 0, data3.length );
dumpRecordStore( rs, System.out );
rs.closeRecordStore();
}
catch( RecordStoreException e ){
System.out.println( e );
}
notifyDestroyed();
}
public void dumpRecordStore( RecordStore rs,PrintStream out )
{
if( rs == null ) return;
StringBuffer hexLine = new StringBuffer();
StringBuffer charLine = new StringBuffer();
try {
int lastID = rs.getNextRecordID();
byte[] data = new byte[100];
int size;
for( int i = 1; i < lastID; ++i ){
try {
size = rs.getRecordSize( i );
if( size > data.length ){
data = new byte[ size * 2 ];
}
out.println( "Record " + i +
" of size " + size );
rs.getRecord( i, data, 0 );
dumpRecord( data, size, out, hexLine, charLine, 16 );
out.println( "" );
}
catch( InvalidRecordIDException e ){
continue;
}
}
}
catch( RecordStoreException e ){
out.println( "Exception reading record
store: " + e );
}
}
private void dumpRecord( byte[] data, int size,PrintStream out,StringBuffer hexLine,StringBuffer charLine,int maxLen )
{
if( size == 0 ) return;
hexLine.setLength( 0 );
charLine.setLength( 0 );
int count = 0;
for( int i = 0; i < size; ++i ){
char b = (char) ( data[i] & 0xFF );
if( b < 0x10 ){
hexLine.append( '0' );
}
hexLine.append( Integer.toHexString( b ) );
hexLine.append( ' ' );
if( ( b >= 32 && b <= 127 ) ||
Character.isDigit( b ) ||
Character.isLowerCase( b ) ||
Character.isUpperCase( b ) ){
charLine.append( (char) b );
} else {
charLine.append( '.' );
}
if( ++count >= maxLen || i == size-1 ){
while( count++ < maxLen ){
hexLine.append( " " );
}
hexLine.append( ' ' );
hexLine.append( charLine.toString() );
out.println( hexLine.toString() );
hexLine.setLength( 0 );
charLine.setLength( 0 );
count = 0;
}
}
}
public void destroyApp( boolean unconditional ) {
}
public void startApp() {
}
public void pauseApp() {
}
}
skyyoung 2002-03-15
  • 打赏
  • 举报
回复
看看J2ME这个API的文档吧。
yadang 2002-03-15
  • 打赏
  • 举报
回复
在线等待
yadang 2002-03-15
  • 打赏
  • 举报
回复
这个我用过!但是"mydata"到底是存储在哪个位置??能详细说说吗?

23,407

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧