codenameone アプリケーションにストレージ ファイルを追加しました。場合によっては、特定のストレージ ファイルを削除し、古いフィルター処理されたデータと新しいデータを使用して再作成したいと考えています。削除するとうまくいきません。
まず、StorageManager クラスでストレージ ファイルをクリアするためのメソッドを作成します。
public void clearData(String pStorageTable){
Storage.getInstance().deleteStorageFile(pStorageTable);
}
他のクラスでは、このメソッドを次のように使用します。
// load all data of specific storage file
// ...
new DBManager().clearData(ThreeTrans.DB_NAME);
// write old data with filtering of specific ID and new data
// ...
データの書き込み方法は次のとおりです。
public void write(ThreeTrans pTT){
if(store == null) {
store = Storage.getInstance();
}
DB_NAME = "TT";
if(!store.exists(DB_NAME)) {
Hashtable depHash = new Hashtable();
String k = "1" + pTT.getNumber();
depHash.put(k, pTT.toString());
store.writeObject(DB_NAME, depHash);
}
else {
Hashtable depHash = (Hashtable)store.readObject(DB_NAME);
if (!depHash.containsValue(pTT.getNumber())) {
String k = String.valueOf(getLastKeyNumber());
depHash.put(k, pTT.toString());
store.writeObject(DB_NAME, depHash);
}
}
}
最初は、ストレージファイルを削除するためにこの方法を使用していました:
public void clearData(String pStorageTable){
if(store == null) {
store = Storage.getInstance();
}
for (String str : store.listEntries()) {
if(str.toLowerCase().startsWith(pStorageTable)) {
store.deleteStorageFile(str);
}
}
}
この問題の後、この方法はこれに変更されました。
public void clearData(String pStorageTable){
Storage.getInstance().deleteStorageFile(pStorageTable);
}