codenameone - 存储文件不会删除

时间:2013-05-21 06:45:23

标签: java-me storage lwuit codenameone

我已将存储文件添加到我的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);
}

1 个答案:

答案 0 :(得分:0)

我假设您没有在输出流或使用该文件的输入流上调用close(),并且文件仍然存在锁定。这种情况通常就是这种情况。