我制作了一个java applet /应用程序游戏,它应该保存用户可以创建到本地计算机的级别。 我说applet / application因为它既可以作为应用程序运行,也可以作为applet运行。 目前我正在使用它来编写文件:
BufferedWriter bf = new BufferedWriter(new FileWriter("Circles/levels/level.txt"));
for (int i = 0; i < lines.size(); i++) {
bf.write(lines.get(i));
bf.newLine();
}
lines是一个arraylist,带有要写入文件的行。
和
FileReader fr = new FileReader("Circles/levels/level.txt");
BufferedReader bf = new BufferedReader(fr);
lines = new ArrayList<String>();
while (true) {
String line = bf.readLine();
if (line == null) {
break;
}
lines.add(line);
}
bf.close();
读取文件。那些被try / catch循环包围,我只是展示了我的所需。
这可行,但它似乎是不同操作系统上完全不同的位置,应用程序存储在与applet不同的位置。
我想要一种方法来获取一个地方的绝对路径来保存不管java程序运行位置都不会改变的级别,如果你将它作为一个应用程序和一个applet运行它将是相同的。在所有操作系统(linux,windows,mac)上都可以使用它。
答案 0 :(得分:5)
小程序根本没有保存数据的位置,所以如果你想作为小程序运行,你必须非常简单地避免这种情况。 applet沙箱可以完全阻止文件系统访问。您需要在服务器上调用以保存数据。
对于独立应用程序,我很遗憾地说没有完全普遍接受的约定。但是,在Linux,OSX和Windows上,在用户主目录中创建dotfile目录通常被认为是可接受的做法:
public static final File savedir = new File(new File(System.getProperty("user.home")), ".yourgame");
然后,从中获取文件名:
FileReader fr = new FileReader(new File(savedir, "level.txt"));
虽然它有效,但它并不完全是Windows程序通常会做的事情。