dcsimg
How do I deal with file systems using J2ME?
1 posts in topic
Flat View  Flat View
TOPIC ACTIONS:
 

Posted By:   Ashley_Swinson
Posted On:   Monday, June 14, 2004 06:06 PM

I'm creating an application using J2ME that needs to open a local file, write to that file, and then save it. How do I do this if J2ME does not support file systems? Please help or give a hint. I tried using InputConnection and OutputConnection, but I kept getting a classnotfound exception.

Re: How do I deal with file systems using J2ME?

Posted By:   Brian_Glodde  
Posted On:   Monday, June 14, 2004 06:46 PM

Using the RecordStore:


import javax.microedition.midlet.MIDlet;
import javax.microedition.rms.RecordStore;

public class ReadWrite extends MIDlet {
private RecordStore rs = null;
static final String HD_STORE = "MY_DB";

public ReadWrite() {
// Create the record store
openRecStore();

// Write a few records and read them back
writeRecord( "JGuru" );
writeRecord( "MIDP" );
readRecords();
closeRecStore();
deleteRecStore();
}

public void destroyApp( boolean unconditional ) {
}

public void startApp() {
destroyApp( false );
notifyDestroyed();
}

public void pauseApp() {
}

public void openRecStore() {
try {
// The second parameter indicates that the record store
// should be created if it does not exist
rs = RecordStore.openRecordStore( HD_STORE, true );
} catch( Exception e ) {
writeOutput( e.toString() );
}
}

public void closeRecStore() {
try {
rs.closeRecordStore();
} catch( Exception e ) {
writeOutput( e.toString() );
}
}

public void deleteRecStore() {
if( RecordStore.listRecordStores() != null ) {
try {
RecordStore.deleteRecordStore( HD_STORE );
} catch( Exception e ) {
writeOutput( e.toString() );
}
}
}

public void writeRecord( String str ) {
byte[] rec = str.getBytes();

try {
rs.addRecord( rec, 0, rec.length );
} catch( Exception e ) {
writeOutput( e.toString() );
}
}

public void readRecords() {
try {
// Intentionally make this too small to test code below
byte[] recData = new byte[5];
int len;

for( int i = 1; i <= rs.getNumRecords(); i++ ) {
if( rs.getRecordSize( i ) > recData.length ) {
recData = new byte[rs.getRecordSize( i )];

}
len = rs.getRecord( i, recData, 0 );
System.out.println( "Record #" + i + ": " + new String( recData, 0, len ) );
System.out.println( "------------------------------" );
}
} catch( Exception e ) {
writeOutput( e.toString() );
}
}

private void writeOutput( String str ) {
System.err.println( "Msg: " + str );
}
}
About | Sitemap | Contact