java file.delete()不起作用

时间:2013-11-09 02:28:38

标签: java file delete-file

我创建了一个属性文件,我想加密保留相同的文件夹加密属性文件并删除原始属性文件。当我第一次在我的java应用程序上执行此操作时,它确实正确。但是,当我再次执行此操作时,它不会删除创建的原始属性文件。当我尝试手动删除它时,它再次尝试消息,说“由于文件在java(TM)平台SE二进制文件中打开,因此操作无法完成。关闭文件并重试。”关闭我的应用程序后,可以手动删除它。我的代码如下。问题在于propfile123.delete()。我该如何解决这个问题。

//Encrypt the property file
        Encrypt_Decrypt encrpt= new Encrypt_Decrypt("AES/ECB/PKCS5Padding","properties\\"+name_of_propertice_file+".properties", mstr_pass);
        try {
            encrpt.encrypt();
        } catch (Exception ex) {
            Logger.getLogger(Secure_File.class.getName()).log(Level.SEVERE, null, ex);
        }

        //delete the original properties file
        File propfile123= new File("properties\\"+name_of_propertice_file+".properties");
        System.out.println(propfile123.exists());   // always return true

        System.out.println(propfile123.delete());   //here returns false when I call at second time to this method.

2 个答案:

答案 0 :(得分:13)

证据很明显,删除失败的原因是您的应用仍然在某个地方打开文件。

要解决此问题,您需要弄清楚在哪里打开文件,并确保在尝试删除它之前关闭它。 (我怀疑这个问题与你的Encrypt_Decrypt课以及你使用它的方式有关。但这只是猜测。)

答案 1 :(得分:7)

打开文件时:

BufferedReader br = new BufferedReader (new FileReader (new File ("somefile"))); 

如果您未调用close()的方法BufferedReader,则无法删除该文件。

在对文件进行任何更改之前,请务必关闭该文件,甚至将其删除或重命名。 我希望能帮助你,问候。