用Java删除文件

时间:2013-06-12 16:02:46

标签: java file-io

我想删除一个文件,有时候我可以,有时候我不会。我这样做:

String filePath = "C:\\Users\\User\\Desktop\\temp.xml";
File f = new File(filePath);
if (f.exists())
{
  if(f.delete())
     System.out.println("deleted");
  else
     System.out.println("not deleted");
}

我认为当我无法删除它时,因为它仍然在应用程序中的某个位置打开。 但是,如果我不使用FileInputStreamBufferedReader,我该如何关闭它呢?因为如果我使用这些类,我无法看到该文件是否存在。或者我可以吗?

修改 我刚刚发现了我的错误。我这样做了:

XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(new FileOutputStream(filePath));

然后,只关闭eventWriter

我必须这样做:

FileOutputStream fos = new FileOutputStream(filePath);
XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(fos);

然后:

    eventWriter.close();
    fos.close();

3 个答案:

答案 0 :(得分:1)

该文件可能由另一个进程打开,您可能没有足够的权限删除该文件,...

修改

我还强烈建议尽可能使用自动资源管理,以确保您的流/读者/作者正确关闭。

答案 1 :(得分:1)

我建议使用NIO2 Files.delete,它会抛出IOException,解释无法删除文件的原因。

答案 2 :(得分:0)

如果您正在使用BufferedReader类,则无法检查是否存在,这就是File类的用途。您可以使用BufferedReader打开/关闭文件,并使用File进行检查。这是一个例子:

String filePath = "C:\\Users\\User\\Desktop\\temp.xml";
File f = new File(filePath);
if (f.exists())
{
   BufferedReader open = new BufferedReader(new FileReader(f));  // opens file
   open.write("blah");  //writes to file
   open.close();   // closes file
} else {
    System.out.println("File cannot be found");
}

希望这有助于您了解更多情况!