Java me codenameone-存储文件不';不删除

Java me codenameone-存储文件不';不删除,java-me,storage,lwuit,codenameone,Java Me,Storage,Lwuit,Codenameone,我已将存储文件添加到我的codenameone应用程序中。在某些情况下,我想删除特定的存储文件,并用一些旧的过滤数据和新数据重新创建它。它不适合删除 首先,我在StorageManager类中创建清除存储文件的方法: public void clearData(String pStorageTable){ Storage.getInstance().deleteStorageFile(pStorageTable); } 在其他类中,我使用如下方法: // load all data o

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

我假设您没有对处理该文件的输出流或输入流调用close(),并且该文件上仍然有一个锁。这类问题通常都是这样。

你说的“不好用”是什么意思?你有例外吗?您的最终数据没有您所需要的全部?它无论如何都不起作用。未引发异常,未执行任何操作。此存储文件是否来自库?哪一个?我加上了“ThreeTran”的名字。我用以下方式初始化存储文件:Storage store=Storage.getInstance();当你使用codenameone时,你看到这个视频了吗?我使用writeObject方法将数据保存到存储文件中,使用readObject方法从存储文件中读取数据。是否需要调用close()方法?否。是否可以发布包含写入代码和正确删除代码的代码?应该可以无缝地工作。这是在模拟器上还是在设备上?我编辑了我的问题。您的第二个问题的答案是肯定的,我对此问题有不同的输出,并且两者(模拟器和设备)都不正确。看起来您在写入时初始化了DB_名称,因此在下一次应用程序调用中它不会被初始化。我用另一种方法解决了它(仅通过替换数据)。谢谢Shai