【问题标题】:How to check if I can delete a file?如何检查我是否可以删除文件?
【发布时间】:2013-05-14 09:13:17
【问题描述】:

我如何检查我可以在 Java 中删除文件?

例如,我应该能够删除文件C:/file.txt,但我永远将能够删除C:/Computer或@987654325 @等

possible duplicate 中描述的解决方案不适用于我。

【问题讨论】:

  • “可能重复的解决方案对我不起作用。”请解释原因?
  • @Marco Forberg 有时它会为 C:/file.txt 等常用文件抛出 Access is denied 异常。

标签: java file io delete-file


【解决方案1】:

删除文件需要文件父级的写入权限,即存储文件的目录。 Java 中的目录也由具有方法canWrite() 的类java.io.File 的实例表示。

所以,要检查文件是否可以删除,你应该调用file.getParent().canWrite()

【讨论】:

  • +1 很好的解决方案,但实际上是file.getParentFile().canWrite()
【解决方案2】:

在我使用 NTFS 和 Java 7 (Oracle JDK) 的 Windows 7 64 位机器上,唯一对我有用的是

boolean canDelete = file.renameTo(file)

这非常简单,也适用于文件夹,这些文件夹在“下面某处”有一个“打开”或“锁定”文件。

我尝试过并产生误报的其他方法:获取 FileLock、File#canWrite、File#setLastModified(“touch”)、file.getParent().canWrite()

【讨论】:

  • 需要注意的是,这个函数的行为是平台相关的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 2010-12-08
  • 2011-09-17
  • 1970-01-01
  • 2013-10-23
  • 2011-07-30
  • 1970-01-01
相关资源
最近更新 更多