存储在java中的本地计算机上保存文件的位置

时间:2013-01-01 02:19:46

标签: java

我制作了一个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)上都可以使用它。

1 个答案:

答案 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程序通常会做的事情。