java - 在Java中删除文件

标签 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();

最佳答案

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

编辑:

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

关于java - 在Java中删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17070179/

相关文章:

Java 编程 - 当我需要字符时,我的用户名显示整数。为什么?

java - Spring Boot 验证集参数名称提供程序

java - Spring Batch 中的作业被执行多次并且不会停止

java - 这是否正确写入文本文件?

c - 混合 fdopen() 和 open() -> 错误的文件描述符

java - 尝试将 if-else 语句转换为 switch 语句,但最终出现错误

java - 自定义 JComponent 未显示在自定义 JPanel 中

使用 mmap 将整个文件复制到内存中

c++ - 将一个txt文件读入一个字符串

c - 将文件内容扫描到结构数组中