【问题标题】:Saving variable state in between sessions?在会话之间保存变量状态?
【发布时间】:2014-06-30 08:13:09
【问题描述】:

所以我正在开发一个 Java IRC 机器人,作为我朋友的一个副项目,虽然开发进展顺利,但我有点不确定如何保存当前的状态会话之间的某些变量。它没有图形用户界面,所以我认为它不会太复杂,但到目前为止我的搜索努力是徒劳的。

谢谢。

【问题讨论】:

  • 请缩小这个问题的范围,除非你想要的答案是这样的:“将值写入文件系统中的文件。在启动时检查众所周知的文件(在上句) 存在,如果存在;然后从该文件加载值。否则,将值设置为默认值。"
  • 如被问及,答案在问题中: Q. 如何保存会话之间的状态? A. 保存会话之间的状态。

标签: java session-state irc


【解决方案1】:

这将取决于您想要保留的变量类型,但所有方法都需要您将一些排序数据写入文件。

如果您只需要保留少量变量,您可以考虑实现一个 .config 文件,它可以是一个简单的分隔文本文件。

如果您想要跟踪整个对象,例如 irc 游戏中的玩家,您可以选择将对象解析为 JSON,并将其保存到文本文件中,以供以后阅读。您可以为此使用Gson

“玩家”对象的示例:

public String savePlayer(String playerName){
    Gson gsonPretty = new GsonBuilder().setPrettyPrinting().create();
    String playerFile = System.getProperty("user.dir")+"\\players\\"+playerName;
    String jsonplayers = gsonPretty.toJson(players.get(playerName));
    try{
        FileWriter writer = new FileWriter(playerFile+".json");
        writer.write(jsonplayers);
        writer.close();
        return "Player file saved successfully!";

    }catch(Exception e){
        e.printStackTrace();
    }
    return "Something went wrong";
}

然后,您可以创建一个加载方法,该方法具有硬编码的文件名或字符串输入来确定要加载的文件,并使用如下内容:

playerFromJson = gson.fromJson(jsonString, Player.class);

在代码中使用该对象

【讨论】:

    猜你喜欢
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多