08/13/14
1
Võ Phương Bình – ITFAC - DLU
Giới thiệu
Ghi và đọc
Duyệt bản ghi
Sắp xếp
Tìm kiếm
08/13/14Võ Phương Bình – ITFAC - DLU
2
RMS - Record Management System:
›
Là cơ chế để các ứng dụng MIDlet lưu trữ, truy
xuất và thao tác dữ liệu trên thiết bị di động.
›
Dữ liệu sẽ được lưu trữ bền trên thiết bị ngay cả
khi ứng dụng không còn thực thi.
Lớp bản ghi: RecordStore
›
javax.microedition.rms. RecordStore;
08/13/14Võ Phương Bình – ITFAC - DLU
3
Khởi tạo:
›
RecordStore rs =
RecordStore.openRecordStore(String filename,
boolean createnew)
Ghi:
›
rs.addRecord(byte[] rec, int start, int length);
Đọc:
›
rs.getRecord(int index, byte[] recData, int offset);
08/13/14Võ Phương Bình – ITFAC - DLU
4
Các phương thức:
›
String[] listRecordStores();
›
int getNumRecords();
›
int getRecordSize(int index);
›
void closeRecordStore();
›
void deleteRecordStore(String filename);
08/13/14Võ Phương Bình – ITFAC - DLU
5
Sử dụng Stream:
›
ByteArrayOutputStream strmBytes;
›
DataOutputStream strmDataType = new
DataOutputStream(strmBytes);
Ghi:
strmDataType.writeUTF(String sData);
strmDataType.writeBoolean(boolean bData);
strmDataType.writeInt(int iData);
Đọc:
strmDataType.readUTF();
strmDataType.readBoolean();
strmDataType.readInt();
08/13/14Võ Phương Bình – ITFAC - DLU
6
Sử dụng bộ đếm bản ghi Enumerator.
Cho pho phép di chuyển đến trước và sau các bản ghi
trong vùng bản ghi.
Điểm mạnh: Sắp xếp, Tìm kiếm.
Ví dụ:
RecordEnumeration re =
rs.enumerateRecords(Filter, Compator, false);
while (re.hasNextElement())
{
String str = new String(re.nextRecord());
System.out.println(str);
}
08/13/14Võ Phương Bình – ITFAC - DLU
7
Thực thi giao diện RecordComparator.
Định nghĩa lại hàm so sánh compare:
›
class Comparator implements RecordComparator
›
{
public int compare(byte[] rec1, byte[] rec2)
{
String str1 = new String(rec1), str2 = new String(rec2);
int result = str1.compareTo(str2);
if (result == 0)
return RecordComparator.EQUIVALENT;
else if (result < 0)
return RecordComparator.PRECEDES;
else
return RecordComparator.FOLLOWS;
}
›
}
08/13/14Võ Phương Bình – ITFAC - DLU
8
Ví dụ:
08/13/14Võ Phương Bình – ITFAC - DLU
9
Thực thi giao diện RecordFilter
›
class SearchFilter implements RecordFilter
›
{
private String searchText = null;
public SearchFilter(String searchText) {
this.searchText = searchText.toLowerCase();
}
public boolean matches(byte[] candidate) {
String str = new String(candidate).toLowerCase();
if (searchText != null && str.indexOf(searchText) != -1)
return true;
return false;
}
›
}
08/13/14Võ Phương Bình – ITFAC - DLU
10
Sử dụng lớp SearchFilter :
›
private void searchRecordStore()
›
{
›
if (rs.getNumRecords() > 0)
›
{
›
SearchFilter search = new SearchFilter(tfFind.getString());
›
RecordEnumeration re = rs.enumerateRecords(search, null,
false);
›
if (re.numRecords() > 0)
›
siMatch.setText(new String(re.nextRecord()));
›
re.destroy();
›
}
›
}
›
}
08/13/14Võ Phương Bình – ITFAC - DLU
11