删除在JavaFX应用程序中打开的文件

时间:2016-03-13 03:39:08

标签: java javafx io bufferedreader bufferedwriter

我目前正在开发一个JavaFX应用程序,它使用保存文件来加载有关上一个会话的信息。我在关闭BufferedReader和BufferedWriters时遇到问题。在JavaFX应用程序终止之前,文件不会被解锁。我已经跟踪了代码,并确保没有BufferedReaders和BufferedWriters没有关闭。如果我在JavaFX关闭后尝试修改文件,它们将被重命名并正确删除。以下是我读取和写入文件的方法之一。

这是学校作业,不允许使用外部图书馆。

public static boolean addNewAccount(User user, String fileName)
{
    try
    {
        File output = new File("temp.csv");
        File input = new File(fileName);


        if (output.exists())
        {
            output.delete();
            output.createNewFile();
        }

        BufferedWriter outputStream = new BufferedWriter(new FileWriter(output.getName()));
        BufferedReader inputStream = new BufferedReader(new FileReader(input.getName()));

        ...
        Read and write stuff here.
        ...

        inputStream.close();
        inputStream = null;
        outputStream.close();
        outputStream = null;
        System.gc();

        input.delete();
        if (!output.renameTo(input))
        {
            HistoryLog.getInstance().log("Something is preventing a file from being closed.");
            return false;
        }

    }
    catch (IOException e)
    {
        e.printStackTrace();
        return false;
    }

    return true;
}

0 个答案:

没有答案