一旦我使用了SVNKit的工作副本,我该如何删除它?

时间:2015-08-05 12:17:14

标签: java svnkit

我创建了一个使用SVNKit执行Subversion存储库提交的类。当我完成提交时,我想销毁我用作工作副本的临时目录。

我创建工作副本目录的方式如下:

    Path svnWorkingCopyDirectory = Files
            .createTempDirectory("svn-working-copy-directory-"
                    + String.valueOf(System.currentTimeMillis()));
    LOGGER.debug("Created SVN working copy directory: " + svnWorkingCopyDirectory);
    svnWorkingCopyDirectory.toFile().deleteOnExit();

但是,退出时不会删除该目录。在SVNKit中是否有办法将目录标记为不再是工作副本?还是另一种删除目录的方法?

1 个答案:

答案 0 :(得分:1)

File.deleteOnExit()就像File.delete()和Files.delete()一样,如果它的参数表示一个目录,那么该目录必须为空才能被删除,在你的情况下它可能不是。

因此,如果要在退出时删除此目录,则必须注册一个关闭钩子,并且在该方法中,您必须首先递归遍历目录深度以删除文件,然后删除空目录。

Apache commons有一个你可以在关机钩子中使用的删除方法,或者适合你的方法:https://commons.apache.org/proper/commons-io/javadocs/api-release/org/apache/commons/io/FileUtils.html#deleteDirectory(java.io.File)