Java。有没有办法只使用一个 java 文件(class...)来 save/load 整个 game/app?
Java. Is there any way to save/load whole game/app using only one java file(class...)?
我不知道 java 中是否有任何方法可以仅使用一个脚本(java 文件,class.. .)?
例如,如果我在很多 java 文件中创建许多整数和字符串,有没有办法只使用一个脚本来保存它们。当我关闭 game/app (System.exit(1);
) 并且当我返回游戏时它会自行加载(我不会丢失我的统计数据。)。
有什么办法吗?
您不应将游戏数据保存到 Java 文件中。这没有道理。 Java 文件用于存储 Java 源代码,而不是您的游戏数据。
你应该把你的游戏数据写到其他文件中,然后在程序启动时读取它。
你基本上使用 ObjectOutputStream
和 ObjectInputStream
来做到这一点。
就在用户关闭程序之前,您创建了一个新的 ObjectOutputStream
:
FileOutputStream fos = new FileOutputStream("The/Path/That/You/Want/The/Data/File/To/be");
ObjectOutputStream stream = new ObjectOutputStream(fos);
然后将所有游戏数据(您的整数和字符串)放入一个实现 Serializable
的 POJO 中。之后,将这个POJO写入那个文件。
这是 POJO class:
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
即可取回所有整数和字符串!
我不知道 java 中是否有任何方法可以仅使用一个脚本(java 文件,class.. .)?
例如,如果我在很多 java 文件中创建许多整数和字符串,有没有办法只使用一个脚本来保存它们。当我关闭 game/app (System.exit(1);
) 并且当我返回游戏时它会自行加载(我不会丢失我的统计数据。)。
有什么办法吗?
您不应将游戏数据保存到 Java 文件中。这没有道理。 Java 文件用于存储 Java 源代码,而不是您的游戏数据。
你应该把你的游戏数据写到其他文件中,然后在程序启动时读取它。
你基本上使用 ObjectOutputStream
和 ObjectInputStream
来做到这一点。
就在用户关闭程序之前,您创建了一个新的 ObjectOutputStream
:
FileOutputStream fos = new FileOutputStream("The/Path/That/You/Want/The/Data/File/To/be");
ObjectOutputStream stream = new ObjectOutputStream(fos);
然后将所有游戏数据(您的整数和字符串)放入一个实现 Serializable
的 POJO 中。之后,将这个POJO写入那个文件。
这是 POJO class:
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
即可取回所有整数和字符串!