【问题标题】:Java. Is there any way to save/load whole game/app using only one java file(class...)?爪哇。有没有办法只使用一个java文件(类...)来保存/加载整个游戏/应用程序?
【发布时间】:2016-04-27 05:14:57
【问题描述】:

我不知道 java 中是否有任何方法可以仅使用一个脚本(java 文件、类...)来保存和加载整个游戏/应用程序?

例如,如果我在许多 java 文件中创建了许多 int 和 string,有没有办法只使用一个脚本来保存它们。当我关闭游戏/应用程序 (System.exit(1);) 并且当我回到游戏时,它会自行加载(我不会丢失我的统计数据。)。

有什么办法吗?

【问题讨论】:

  • 是的!将saveload 代码粘贴到一个文件中。祝你好运!
  • 你在说什么样的游戏/应用程序?如果需要,您可以将所有这些保存在数据库中。

标签: java save load


【解决方案1】:

您不应将游戏数据保存到 Java 文件中。这没有道理。 Java 文件用于存储 Java 源代码,而不是您的游戏数据。

您应该将您的游戏数据写入其他文件,并在程序启动时读取。

您基本上使用ObjectOutputStreamObjectInputStream 来执行此操作。

就在用户关闭程序之前,您创建一个新的ObjectOutputStream

FileOutputStream fos = new FileOutputStream("The/Path/That/You/Want/The/Data/File/To/be");
ObjectOutputStream stream = new ObjectOutputStream(fos);

然后,您将所有游戏数据(您的整数和字符串)放入一个实现 Serializable 的 POJO 中。之后,将此 POJO 写入该文件。

这是 POJO 类:

public class GameData implements Serializable {
    private int int1, int2, int3;
    private String s1, s2, s3;

    // getters for the fields

    public GameData(int int1, int int2, int int3, String s1, String s2, String s3) {
        this.int1 = int1;
        this.int2 = int2;
        this.int3 = int3;
        this.s1 = s1;
        this.s2 = s2;
        this.s2 = s3;
    }
}

然后你像这样保存数据:

GameData data = new GameData(someInt1, someInt2, someInt3, someStr1, someStr2, someStr3);
stream.writeObject(data);

当您想读回数据时,只需创建一个FileInputStream 和一个ObjectInputStream 并将读取的对象转换为GameData,您就可以取回所有的整数和字符串!

【讨论】:

  • Tnx。为您解答
猜你喜欢
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
  • 1970-01-01
  • 2022-12-03
  • 1970-01-01
相关资源
最近更新 更多