我创建了一个类来使用 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 有没有办法将目录标记为不再是工作副本?或者另一种删除目录的方法?
最佳答案
File.deleteOnExit() 的工作方式类似于 File.delete() 和 Files.delete() ,因为如果它的参数表示一个目录,则该目录必须为空才能删除,而在您的情况下可能不是。
因此,如果您想在退出时删除此目录,则必须注册一个关闭 Hook ,并且在该方法中,您必须首先递归地遍历目录深度以删除文件,然后删除空目录。
Apache commons 有一个删除方法,您可以在关闭 Hook 中或在适合您的任何时候使用:https://commons.apache.org/proper/commons-io/javadocs/api-release/org/apache/commons/io/FileUtils.html#deleteDirectory(java.io.File)
关于java - 当我使用完 SVNKit 的工作副本后,如何删除它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31832298/