java - 文件未正确保存

标签 java file save load

我正在为我的应用程序中的设置创建保存/加载功能。启动程序后,它会尝试查找该文件。如果失败,它会尝试使用默认设置创建一个文件(代码如下)

try (FileWriter fileWriter = new FileWriter(absolutePath))
        {
            fileWriter.write("theme=light\n");
            fileWriter.write("resolution=1280x720\n");
            fileWriter.write("printfps=false\n");

            System.out.println("Reset settings");
            load();
        }
        catch (FileNotFoundException e)
        {
            System.out.println("Settings File not found.");
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

写入此内容后,它会继续加载文件。 (调用load()方法)

在 load 方法中,应用程序读取文件的内容(代码如下)。

try (BufferedReader bufferedReader = new BufferedReader(new FileReader(absolutePath)))
        {
            String line = bufferedReader.readLine();
            System.out.println(line);
            while(line != null)
            {
                if (line.contains("="))
                {
                    String key = line;
                    String value = line;

                    while (key.contains("="))
                    {
                        key = key.substring(0, key.length() - 1);
                    }

                    while (value.contains("="))
                    {
                        value = value.substring(1);
                    }

                    settings.put(key, value);
                }

                System.out.println(line);
                line = bufferedReader.readLine();
            }
            System.out.println(settings);
        }

但是,它返回文件为空。在搞乱断点之后,我可以确认文件确实在那时没有更新。相当奇怪的是,如果我稍后暂停应用程序,该文件似乎包含写入其中的文本,即使该文件稍后在程序中没有被触及。

这让我相信文件更新需要一些时间,因此没有及时更新 load() 方法。这是正确的,还是我错过了什么?有解决方法吗?

感谢所有帮助:)

最佳答案

您在实际保存文件之前调用了load()。 要保存文件,请调用 fileWriter.close() 或将 load() 调用移出 try-with-resource block :文件编写器:

        try (FileWriter fileWriter = new FileWriter(absolutePath))
        {
            fileWriter.write("theme=light\n");
            fileWriter.write("resolution=1280x720\n");
            fileWriter.write("printfps=false\n");
        }
        catch (FileNotFoundException e)
        {
            System.out.println("Settings File not found.");
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        // FileWriter closed now and the file contents saved
        System.out.println("Reset settings");
        load();

关于java - 文件未正确保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61253816/

相关文章:

java - 类似于日期解析器的可配置字符串解析器

Android:使用 Assets 文件时出现 ZipFile、FileNotFoundException

java - 如何在java servlet中读取文件

java - 如何检查 7 个随机字母组成的字符串是否可以组成文件中存在的单词

javascript - 保存每个项目被点击的点击次数

java - Android用动画连续移动背景

java - Apache Isis SimpleApp 原型(prototype) - 干净运行类路径错误

java - Api Java弹性搜寻|通过传递列表并返回所有匹配项进行搜索

c - 将数据保存到程序中?

python - 在内存python中下载pdf