文件未正确保存

问题描述 投票:0回答:1

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

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()方法)

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

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()方法不会及时更新。这是正确的,还是我缺少了什么?是否有解决方法?

感谢所有帮助:)

java file save load
1个回答
1
投票

您在实际保存文件之前正在呼叫load()。要保存文件,请调用fileWriter.close()或使用FileWriter将load()调用移出try-with-resource块:

        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();

© www.soinside.com 2019 - 2024. All rights reserved.