我制作了一个 java 小程序/应用程序游戏,它应该将用户可以创建的关卡保存到他们的本地机器上。 我说 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 是一个包含要写入文件的行的数组列表。
和
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 循环包围,我只是在展示我必须展示的内容。
这工作正常,但它似乎在不同的操作系统上是完全不同的位置,并且应用程序存储在与小程序不同的位置。
我想要一种方法来获得保存级别的绝对路径,无论从何处运行 java 程序都不会改变,并且如果您将其作为应用程序和小程序运行,则相同.如果能在所有操作系统(linux、windows、mac)上工作也很好。
最佳答案
小程序根本没有保存数据的位置,所以如果你想作为小程序运行,你必须避免它,很简单。 applet 沙箱完全阻止文件系统访问。您需要调用服务器来保存您的数据。
至于独立的应用程序,我也很遗憾地说没有完全普遍接受的约定。但是,在 Linux、OSX 和 Windows 上,在用户的主目录中创建点文件目录通常被认为是可接受的做法:
public static final File savedir = new File(new File(System.getProperty("user.home")), ".yourgame");
然后,从中导出您的文件名:
FileReader fr = new FileReader(new File(savedir, "level.txt"));
虽然它可以工作,但它并不是 Windows 程序通常会做的事情。
关于java - 在java中将保存文件存储在本地机器上的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14107442/