为什么我的程序不能删除它在Win7下创建的文件?

时间:2011-09-25 04:42:27

标签: java eclipse windows-7

我在Eclipse中创建了一个Java程序。我从Windows XP开始,但最近升级了。

作为其保存机制的一部分,程序将设置写入文件settings_new.sav。如果可以,它会删除settings.sav,并重命名新的名称以匹配旧名称。虽然它在winXP下工作(至少我认为它确实如此,但我现在无法检查),在win7下,它无法删除文件,即使它是创建它的程序(尽管,程序的不同实例) )。

该文件由Eclipse拾取,可以很愉快地从那里删除。我可以手动删除它。我是自己计算机上的管理员。该文件夹位于工作区文件夹内,并且不在Program Files中(但是,我不知道最终用户是否会在那里安装它)。该程序可以很好地创建和修改文件。它不会抛出任何异常,我认为如果它是win7阻止它的话。

有什么想法吗?

2 个答案:

答案 0 :(得分:9)

这是由于java中的文件锁定机制。确保在完成后关闭该文件上的缓冲流,如BufferedReader,BufferedInputStream。

答案 1 :(得分:-4)

我曾经遇到过这个问题,当你完成文件使用后,你必须将文件设置为null。所以,如果你做了类似的事情:

public void createFile(String path)
{
    File file = new File(path);
    file.createNewFile();
    file = null
}

完成使用后,必须将文件设置为null,以便系统停止使用该文件。你必须使用FileReader和FileWriter做同样的事情。您必须将文件读取器和文件编写器设置为null才能再次访问该文件。试一试,让我知道它是怎么回事。