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!
[code]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");
}
}
}
[/code]