Espero que essa classe ajude aquele que desejem manipular arquivos rms.
Claro que se alguem quiser fazer alguma alteração ou acredite que tem um método melhor ... por favor publique ... sempre irá ajudar a meelhorar o código ... que por isnal ainda precisa de uns retoques!
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.microedition.rms.InvalidRecordIDException;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStoreFullException;
import javax.microedition.rms.RecordStoreNotFoundException;
import javax.microedition.rms.RecordStoreNotOpenException;
public class MFile
{
private RecordStore rs;
private String file;
public MFile(String file)
{
this.file= file;
this.rs = null;
}
public InputStream getInputStream()
{
InputStream in = null;
try
{
int id = getNextRecordId() - 1;
int recordSize = rs.getRecordSize(id);
byte[] data = new byte[recordSize];
ByteArrayInputStream bais = new ByteArrayInputStream(data);
DataInputStream dis = new DataInputStream(bais);
int numBytes = rs.getRecord(id, data, 0);
in = dis;
}
catch (RecordStoreException e)
{
if (in != null)
in = null;
System.out.println("-- RecordStoreException erro");
}
return in;
}
public void open()
{
try
{
rs = RecordStore.openRecordStore(file, true);
}
catch (RecordStoreNotFoundException e)
{
System.out.println("-- (open true) RecordStore not found");
}
catch (RecordStoreException e)
{
System.out.println("-- (open true) Error");
}
}
public void open(boolean isCreated)
{
try
{
rs = RecordStore.openRecordStore(file, isCreated);
}
catch (RecordStoreNotFoundException e)
{
System.out.println("-- (open) RecordStore not found");
}
catch (RecordStoreException e)
{
System.out.println("-- (open) Error");
}
}
public void deleteRecord()
{
try
{
RecordStore.deleteRecordStore(file);
}
catch (RecordStoreNotFoundException e)
{
System.out.println("-- (deleteRecord) RecordStore not found");
}
catch (RecordStoreException e)
{
System.out.println("-- (deleteRecord) Error");
}
}
public boolean isSave()
{
String[] listRecord = RecordStore.listRecordStores();
try
{
for (int i = 0; i < listRecord.length; i++)
{
if (listRecord[i].equals(file))
return true;
}
}
catch (Exception e)
{
return false;
}
return false;
}
public void close()
{
try
{
rs.closeRecordStore();
}
catch (RecordStoreNotOpenException e)
{
System.out.println("-- (close) Record Store is closed");
}
catch (RecordStoreException e)
{
System.out.println("-- (close) Error");
}
}
public void add(String text)
{
try
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeUTF(text);
dos.flush();
byte[] data = baos.toByteArray();
int id = rs.addRecord(data, 0, data.length);
baos.close();
dos.close();
}
catch (IOException e)
{
System.out.println("-- (add) Error IO");
}
catch (RecordStoreFullException e)
{
System.out.println("-- (add) Storage is full");
}
catch (RecordStoreNotOpenException e)
{
System.out.println("-- (add) Record Store is closed");
}
catch (RecordStoreException e)
{
System.out.println("-- (add) Error");
}
}
public int getNextRecordId()
{
int toReturn = 0;
try
{
toReturn = rs.getNextRecordID();
}
catch (RecordStoreFullException e)
{
System.out.println("-- (getNextRecordId) Storage is full");
}
catch (RecordStoreNotOpenException e)
{
System.out.println("-- (getNextRecordId) Record Store is closed");
}
catch (RecordStoreException e)
{
System.out.println("-- (getNextRecordId) Error");
}
return toReturn;
}
public int size()
{
int toReturn = 0;
try
{
toReturn = rs.getNumRecords();
}
catch (RecordStoreNotOpenException e)
{
System.out.println("-- (size) Record Store is closed");
}
catch (RecordStoreException e)
{
System.out.println("-- (size) Error");
}
return toReturn;
}
public void delete(int id)
{
try
{
rs.deleteRecord(id);
}
catch (RecordStoreFullException e)
{
System.out.println("-- (delete) Storage is full");
}
catch (RecordStoreNotOpenException e)
{
System.out.println("-- (delete) Record Store is closed");
}
catch (RecordStoreException e)
{
System.out.println("-- (delete) Error");
}
}
public String[] getListRecord()
{
return rs.listRecordStores();
}
public String getRecord(int id)
{
String toReturn = "";
try
{
int recordSize = rs.getRecordSize(id);
byte[] data = new byte[recordSize];
ByteArrayInputStream bais = new ByteArrayInputStream(data);
DataInputStream dis = new DataInputStream(bais);
int numBytes = rs.getRecord(id, data, 0);
toReturn = dis.readUTF();
bais.reset();
bais.close();
dis.close();
}
catch (IOException e)
{
System.out.println("-- (getRecord) Error IO");
}
catch (ArrayIndexOutOfBoundsException e)
{
System.out.println("-- (getRecord) Index out of bounds");
}
catch (InvalidRecordIDException e)
{
System.out.println("-- (getRecord) ID not found");
}
catch (RecordStoreNotOpenException e)
{
System.out.println("-- (getRecord) Record Store is closed");
}
catch (RecordStoreException e)
{
System.out.println("-- (getRecord) Error");
}
return toReturn;
}
public void update(int id, String text)
{
try
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeUTF(text);
dos.flush();
byte[] data = baos.toByteArray();
rs.setRecord(id, data, 0, data.length);
}
catch (IOException e)
{
System.out.println("-- (update) Error IO");
}
catch (ArrayIndexOutOfBoundsException e)
{
System.out.println("-- (update) Index out of bounds");
}
catch (InvalidRecordIDException e)
{
System.out.println("-- (update) Invalid ID");
}
catch (RecordStoreNotOpenException e)
{
System.out.println("-- (update) Record Store is closed");
}
catch (RecordStoreException e)
{
System.out.println("-- (update) Error");
}
}
}