【问题标题】:writing to text file in blackberry在黑莓中写入文本文件
【发布时间】:2010-11-30 17:51:19
【问题描述】:

有什么办法可以使文本文件中的数据持久化?每次用户玩完游戏时,在我的程序中,他的名字和相应的分数都会写入一个文本文件。当下一个玩家到来时,前一个玩家会被覆盖。由于我在写模式下写作,我不确定是否支持附加模式以在黑莓中保存此类分数...欢迎任何建议

【问题讨论】:

  • 字符串文本= cs.getText()+" "+(elapsed/34); outStream.write(text.getBytes()); cs.getText() 获取用户名并 elapsed/34 生成分数。这两个实体编写正确,但我怎样才能在不干扰以前条目的情况下完成这项工作......所以当我访问平面文件时,我必须得到一个列表的名字和他们的分数。
  • 据我所知,黑莓中没有附加模式,但这应该很容易重新创建。只需在覆盖之前读入所有文本文件,然后在写入文件时将其写回。但是,我仍然很好奇您为什么没有像我最初推荐的那样使用 PersistentStore 和 Hashtable。我真的认为这是一种更好的方法,如果您发布您遇到的问题,我会尽力回答。
  • 正如乔纳森所说;看看 PersistentStore :我在这里写了一个它的用法示例:stackoverflow.com/questions/3805182/…。它应该更快更简单。

标签: blackberry jde


【解决方案1】:

您确实应该使用 PersistentStore 来存储此类信息 - 它比尝试写入文件更容易使用并且可能更可靠。

但是,如果你坚持写文件,下面是打开文件进行追加的一般代码:

private OutputStream openFileForWriting(String filePath) {
    try {
        FileConnection fconn = (FileConnection) Connector.open(filePath);
        // If no exception is thrown, then the URI is valid, but the file may or may not exist.
        if (!fconn.exists()) {
            fconn.create();  // create the file if it doesn't exist
        }
        return fconn.openOutputStream(fconn.fileSize());
    } catch (IOException ioe) {
        System.out.println("Could not open " + filePath + " for writing");
    }
    return null;
}

【讨论】:

  • @乔纳森:好吧,现在你知道分数和名字是如何生成的,指导我如何在这个......和......对于这个问题,每次都在一个新玩家身上实现哈希表条目表应该自动更新......当我访问高分图标时,我必须能够看到所有名称列表及其分数......请建议如何做到这一点。
  • 您确实应该为此提出一个新问题,但这里有一个简短的解释。创建一个新的哈希表并将分数放入如下:hashtable.put(, )。当您需要分数列表时,调用 hashtable.keys(),遍历键并打印每个用户的分数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多