java - 当我使用完 SVNKit 的工作副本后,如何删除它?

标签 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 有没有办法将目录标记为不再是工作副本?或者另一种删除目录的方法?

最佳答案

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/

相关文章:

java - 如何使用itext向现有PDF文档添加交互式复选框?

java - 找出最初是谁在 Subversion 中添加文件的有效方法

java - 使用SVNkit从SVN存储库下载每个版本中的所有文件-请帮助

java - 为什么 Java SVNKit 在错误的位置添加文件夹

java - 无法使用 SVNKit 提交目录树

java - 使用 Apache Hadoop JAR 文件或特定于供应商的文件?

java - 使用 ANT 通过 SCP 将文件复制到禁用 root 的 Ubuntu 服务器(需要 SUDO)

Java:特定字符报告的数量

java - JNLP w/jdk1.7.0_51;应用被安全设置阻挡了

Java 颠覆库