无法使用 Java 从远程存储库中删除克隆本地文件夹

Not Able to delete a clone local folder from remote repository using Java

我无法删除克隆了远程 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 FileUtils Class forceDelete 方法。我 事件在 FileUtils Class 上尝试了其他方法,但无法删除文件夹。

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

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

谁能帮我解决这个问题。

您需要关闭 Git 存储库。正如您的代码所代表的那样,您正在丢弃参考。我建议使用临时目录克隆到其中,这样您就不必删除它,OS 会。在 Files.

中查看各种 createTempDirectory 方法
Git git = Git.cloneRepository...
try {
    // whatever
} finally {
    if (git != null) git.close();
}

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