package code.kalter.longflight.rms; import code.kalter.longflight.ByteArrayInputStream; import code.kalter.longflight.ByteArrayOutputStream; import javax.microedition.rms.InvalidRecordIDException; import javax.microedition.rms.RecordStore; import javax.microedition.rms.RecordStoreException; /** * Удобная работа с RMS * * @author KalterFive */ public class RMS { public final RecordStore recordStore; public RMS(String name, boolean createIfRecordStoreNotFound) throws RecordStoreException { recordStore = RecordStore.openRecordStore(name, createIfRecordStoreNotFound); } public ByteArrayInputStream get(int id) throws RecordStoreException, RecordNotFoundException { if (recordStore.getNumRecords() < id) { throw new RecordNotFoundException(); } return new ByteArrayInputStream(recordStore.getRecord(id)); } /* * Если запись с номером не будет найдена, то массив байтов запишется в * новую запись, после последней */ public void put(int id, ByteArrayOutputStream bytes) throws RecordStoreException { final byte[] array = bytes.toArray(); final int length = array.length; try { recordStore.setRecord(id, array, 0, length); } catch (InvalidRecordIDException e) { recordStore.addRecord(array, 0, length); } } public void close() throws RecordStoreException { recordStore.closeRecordStore(); } }