我制作了一个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();
}
Run Code Online (Sandbox Code Playgroud)
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();
Run Code Online (Sandbox Code Playgroud)
阅读文件.那些被try/catch循环包围,我只是展示我必须拥有的东西.
这可以正常工作,但它似乎是不同操作系统上完全不同的位置,并且应用程序存储在与applet不同的位置.
我想要一种方法来获得一个地方的绝对路径来保存不管java程序运行位置都不会改变的级别,如果你把它作为一个应用程序和一个applet运行它会是一样的.在所有操作系统(linux,windows,mac)上都可以使用它.
目前在所有的小程序来保存数据没有位置,所以如果你想运行作为applet,你要避免这种情况,很简单.applet沙箱可以完全阻止文件系统访问.您需要在服务器上调用以保存数据.
至于独立应用程序,我很遗憾地说没有完全普遍接受的约定.但是,在Linux,OSX和Windows上,在用户主目录中创建dotfile目录通常被认为是可接受的做法:
public static final File savedir = new File(new File(System.getProperty("user.home")), ".yourgame");
Run Code Online (Sandbox Code Playgroud)
然后,从中导出您的文件名:
FileReader fr = new FileReader(new File(savedir, "level.txt"));
Run Code Online (Sandbox Code Playgroud)
虽然它有效,但它并不完全是Windows程序通常会做的.
| 归档时间: |
|
| 查看次数: |
3272 次 |
| 最近记录: |