读取txt文件

时间:2014-10-16 18:52:36

标签: java input output

我一直在寻找好几个小时,在所有类型的论坛上查看以前的问题,但我仍然没有让它发挥作用。

我有一种俄罗斯方块游戏(它使用的是五联骨牌而不是四联骨牌)。 我想保存一个高分榜单。 我的jar文件在同一文件夹中有一个文本文件(我从eclipse导出的项目), 我希望能够从这个文件中读取几行(字符串和整数),并且我想在程序结束时覆盖文件中的数据。

我遇到了文件路径的大问题,并使其在不同的目录中工作......

我将不胜感激任何帮助!提前谢谢

3 个答案:

答案 0 :(得分:0)

您应该将数据保存到appdata空间,不要保存到与jar文件相同的文件夹中。您可以通过调用System.getenv(“APPDATA”)获取此空间的路径。所以程序看起来像这样:

String path = System.getenv("APPDATA") + File.separator + "best_scores.txt";
try (BufferedWriter bw = new BufferedWriter(new FileWriter(path)))
{
    for(String s : rowsToSave) {
        bw.write(s);
    }
}
catch (Exception e)
{
        // ...
}

答案 1 :(得分:0)

如果使用绝对路径位置是一个选项,您可以这样做。但是,这不是一个好的做法。

如果JAR的目录位于类路径上,请参阅How to really read text file from classpath in Java

如果JAR的目录是当前工作目录new File("highscores.txt"),那么就应该这样做。

您确实需要考虑目标执行环境,并确保使用可移动的东西。

在@ MaKri的回答中,您是否考虑过preferences API等替代格式,这些格式可能比APPDATA更便携(即非Windows)。

答案 2 :(得分:0)

就我而言,我认为使用MaKri的答案是完美的,

因为高分列表不需要是可移植的。

如果有人获得游戏,他的高分是空的,所以它在appdata创建文件。

如果已经有一个,那么我就读了,我可以打印到它。

我之所以使用PrintWriter和Scanner,只是因为我现在对它们很熟悉。

谢谢你们!