当我用 SVNKit 使用完一个工作副本后,我该如何删除它?
Once I've finished using a working copy with SVNKit, how can I remove it?
我创建了一个 class 来使用 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(),因为如果它的参数表示一个目录,则该目录必须为空才能被删除在您的情况下可能不是。
因此,如果您想在退出时删除此目录,则必须注册一个关闭挂钩,并且在该方法中,您必须首先递归遍历目录深度以删除文件,然后删除空目录。
Apache commons 有一个删除方法,您可以在关闭挂钩中或任何适合您的时候使用:https://commons.apache.org/proper/commons-io/javadocs/api-release/org/apache/commons/io/FileUtils.html#deleteDirectory(java.io.File)
我创建了一个 class 来使用 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(),因为如果它的参数表示一个目录,则该目录必须为空才能被删除在您的情况下可能不是。
因此,如果您想在退出时删除此目录,则必须注册一个关闭挂钩,并且在该方法中,您必须首先递归遍历目录深度以删除文件,然后删除空目录。
Apache commons 有一个删除方法,您可以在关闭挂钩中或任何适合您的时候使用:https://commons.apache.org/proper/commons-io/javadocs/api-release/org/apache/commons/io/FileUtils.html#deleteDirectory(java.io.File)