0

我想删除一个文件,有时可以,有时不能。我正在这样做:

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");
}

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

编辑: 我刚刚发现我的错误。我正在这样做:

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

然后,仅关闭eventWriter.

我必须这样做:

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

接着:

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

3 回答 3

1

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

编辑:

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

于 2013-06-12T16:05:03.720 回答
1

我建议使用 NIO2 Files.delete ,它会抛出一个 IOException 来解释为什么无法删除文件。

于 2013-06-12T16:26:55.707 回答
0

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

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");
}

希望这可以帮助您更多地了解情况!

于 2013-06-12T16:07:26.750 回答