我想删除一个文件,有时候我可以,有时候我不会。我这样做:
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();
答案 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");
}
希望这有助于您了解更多情况!