【问题标题】:FileWriter is not writing anything into the fileFileWriter 没有向文件中写入任何内容
【发布时间】:2021-01-17 16:05:42
【问题描述】:

我编写了一个小游戏,游戏结束时也会显示高分。

最高分保存在一个整数变量中,简称为highscore

现在我正在尝试将高分保存到一个文件中,以避免每次关闭应用程序时它都会被重置。

我的方法是使用 FileWriter,如下所示。游戏仍然运行顺利,一切都很好,我没有收到任何错误等,但它不会将任何内容放入文件中。

我只是不明白为什么。

感谢您的帮助。

 private void saveHighscore() {
        File highscoreFile = new File("C:\\Users\\FuadM\\Desktop\\Mueckenfang\\Highscore.txt");
        try (FileWriter highscoreWriter = new FileWriter(highscoreFile)) {

            if (!highscoreFile.exists()) {
                highscoreFile.createNewFile();
            }
            highscoreWriter.write("" + highscore);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

编辑:我刚刚检查并在终端中收到此消息:

    W/System.err: java.io.FileNotFoundException: 
    C:\Users\FuadM\Desktop\Mueckenfang\Highscore.txt: open failed: EROFS
    (Read- only file system)

【问题讨论】:

  • 您的代码对我有用。在我的 Mac 上,我得到了一个不错的新文件,里面有一个数字。是否从您的代码中打印了任何堆栈跟踪?如果是这样,请将其粘贴到问题中(很好地格式化为代码)。
  • @cutiko - 反斜杠是元字符,因此您需要一个额外的反斜杠来转义它。
  • @OleV.V.谢谢你的评论。我刚刚编辑了我的问题。
  • “打开失败:EROFS(只读文件系统)” - 您无法写入只读文件系统。
  • EROFS(增强型只读文件系统)是一个轻量级的只读文件系统…… (Wikipedia)。我不明白你的 C 盘(或只是其中的一部分)是如何只读的。

标签: java android android-studio file


【解决方案1】:

Android 没有 C: 驱动器、桌面或 Mueckenfang 目录。我不太清楚你的想法是什么,但你的手机肯定不能在你的电脑桌面上写文件。

您可以在 Android 上写入文件,但这不是您应该在此处执行的操作。 Android 应用程序内置 SQLite(一个简单的数据库系统),这就是游戏应该存储高分的地方。我认为您的下一步应该是在网上搜索有关如何从 Android 执行 SQLite 的教程。

【讨论】:

  • 共享首选项没问题,而且容易得多。一个文件也可以。只是路径不对。
  • 我对 SQLite 做了一些研究,在看了一些教程并尝试将高分存储在一个小型数据库中之后,我终于有了我想要的东西。谢谢你。只是认为对于初学者来说使用简单的文件会更容易。
猜你喜欢
  • 2018-02-19
  • 2021-11-29
  • 1970-01-01
  • 2012-07-08
  • 2012-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多