【问题标题】:Not Able to delete a clone local folder from remote repository using Java无法使用 Java 从远程存储库中删除克隆本地文件夹
【发布时间】:2017-11-24 19:57:03
【问题描述】:

我无法删除克隆了远程 github 存储库的文件夹。

我的代码如下。

public class JGitDemo {

    public static void main(String[] arg) {

        try {

            String localFolder="F:/demojavarepo";
            Git.cloneRepository().setURI("https://github.com/skeeto/sample-java-project")
                    .setDirectory(new File(localFolder)).setBranch("master").call();

            // Some Processing on the  cloned directory

            FileUtils.forceDelete(new File(localFolder));

            //FileUtils.deleteDirectory(new File(localFolder));

            //FileUtils.deleteQuietly(new File(localFolder));

            //FileUtils.forceDeleteOnExit(new File(localFolder));

        } catch (GitAPIException e) {
            e.printStackTrace();
        }  catch (IOException e) {
            e.printStackTrace();
        }

    }

}

基本上,在克隆 repo 后,我对其进行一些处理,最后我想删除本地文件夹。

但是,当我尝试删除文件夹时,出现以下错误。

  java.io.IOException: Unable to delete file: F:\demojavarepo\.git\objects\pack\pack-b7dc7f9db205afdbdfbb7608f098c2ee38fb4875.pack
    at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:2400)
    at org.apache.commons.io.FileUtils.cleanDirectory(FileUtils.java:1721)
    at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:1617)
    at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:2391)
    at org.apache.commons.io.FileUtils.cleanDirectory(FileUtils.java:1721)
    at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:1617)
    at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:2391)
    at org.apache.commons.io.FileUtils.cleanDirectory(FileUtils.java:1721)
    at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:1617)
    at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:2391)
    at org.apache.commons.io.FileUtils.cleanDirectory(FileUtils.java:1721)
    at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:1617)
    at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:2391)
    at repoclient.JGitDemo.main(JGitDemo.java:22)

我正在使用 Apache Commons IO FileUtilsforceDelete 方法。我 事件在 FileUtils 类上尝试了其他方法,但无法删除文件夹。

我正在使用 JGit api 使用 java 克隆文件夹中的存储库。

我应该以某种方式断开本地 git 文件夹或以某种方式解除本地 git 文件夹与远程 git 的关联,以便成功删除。

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: java git apache-commons jgit


    【解决方案1】:

    您需要关闭 Git 存储库。正如您的代码所代表的那样,您正在丢弃参考。我建议使用临时目录克隆到,这样你就不必删除它,操作系统会。查看Files 中的各种createTempDirectory 方法。

    Git git = Git.cloneRepository...
    try {
        // whatever
    } finally {
        if (git != null) git.close();
    }
    

    如果您必须自己删除目录,请在git.close() 之后执行。请参阅this 线程了解如何在 JVM 退出时执行此操作。

    【讨论】:

    • 感谢您的回复。 git.close() 解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 2019-09-14
    • 1970-01-01
    • 2020-10-11
    • 2020-12-13
    相关资源
    最近更新 更多