java - 在java中将保存文件存储在本地机器上的位置

标签 java

我制作了一个 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/

相关文章:

java - 结果集已关闭检索时出错

java - 有没有替代分层 Spring 安全角色的方法?

java - PhantomJS WebDriver headless : ".click" Method has no effect

java - 对于多态类,可以使用 protected 实例变量吗?

java - 无法使用 Locale ("es_ES"将日期翻译成西类牙语)

java - 根据键和值对映射进行排序

java - 有关 Android 定义和概念的帮助

java - 使用 Java double (或其他任何东西)存储简单分数

java - 如何使用 FileInputStream 访问 jar 中的 txt 文件?

java - 如何解决java.lang.IllegalArgumentException : Width (-1) and height (-1) cannot be <= 0?