无法删除目录,Java

Jam*_*sev 1 java

在我的jUnit,我有一个以下片段:

private String  session = "/tmp/session/";
private File    f;

@Before
public void setUp() {
    f = new File(session);
    f.mkdir();
}

@After
public void tearDown() {
    System.out.println("Directory deleted:   " + f.delete()); // always false
}
Run Code Online (Sandbox Code Playgroud)

与此同时:

  • 目录权限是好的(drwxr-xr-x)
  • 目录包含一些文件(-rw-r--r--)
  • 没有所有权问题(创建者用户删除)

什么会导致f.delete()失败?是f.delete()的等效rm -rf

Ósc*_*pez 6

递归删除非空目录(而不是在进程中重新发明轮子)的最简单方法是使用现有库中的功能,比如Apache Commons文件utils 的FileUtils.deleteQuietly()方法,它指定:

如果file是目录,则删除它和所有子目录(...)要删除的目录不必为空