【问题标题】:Reading in txt file读取txt文件
【发布时间】:2014-10-16 18:52:35
【问题描述】:

我一直在寻找几个小时,在各种论坛上查看以前的问题,但我仍然没有得到它的工作。

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

我在文件路径和使其在不同目录中工作时遇到很大问题...

如果有任何帮助,我将不胜感激!提前致谢

【问题讨论】:

  • 听起来你可能有一些不起作用的代码......你应该在你的帖子中包含它。
  • 我认为程序不应该修改自己的 JAR。为什么高分列表根本需要随 JAR 一起提供?它属于用户数据文件夹。
  • @MattBall 文本文件保存在 JAR 文件的同一文件夹中。不在里面。

标签: java input output


【解决方案1】:

您应该将数据保存到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)
{
        // ...
}

【讨论】:

    【解决方案2】:

    如果可以选择使用绝对路径位置,则可以这样做。但是,这不是一个好习惯。

    如果 JAR 的目录在类路径中,请参阅 How to really read text file from classpath in Java。

    如果 JAR 的目录是当前工作目录 new File("highscores.txt") 应该可以解决问题。

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

    您是否考虑过替代格式,例如preferences API,它可能比@MaKri 的答案中的APPDATA 更便携(即非Windows)。

    【讨论】:

      【解决方案3】:

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

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

      如果有人获得了游戏,他的高分是空的,因此它会在 appdata.xml 中创建文件。

      如果已经有了,我会阅读它,然后我可以打印出来。

      我使用 PrintWriter 和 Scanner,只是因为我现在熟悉这些。

      谢谢你们!

      【讨论】:

      • 便携式,我指的是除 Windows 之外的其他操作系统。请参阅:stackoverflow.com/questions/6561172/… 很高兴 MaKri 的回答对您有用。不要忘记将其标记为“已接受”。
      猜你喜欢
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      • 2014-06-22
      • 2022-01-17
      • 2020-12-13
      相关资源
      最近更新 更多