我创建了一个使用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中是否有办法将目录标记为不再是工作副本?还是另一种删除目录的方法?
答案 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)