簡體   English   中英

無法使用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();
        }

    }

}

基本上,克隆存儲庫后,我會對它進行一些處理,然后最后要刪除本地文件夾。

但是,當我嘗試刪除文件夾時,出現以下錯誤。

  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下議院IO 文件實用程序forceDelete方法。 我在FileUtils類上嘗試了其他方法,但無法刪除文件夾。

我正在使用JGit api使用Java在文件夾中克隆存儲庫。

我應該以某種方式斷開連接還是以某種方式取消本地git文件夾與遠程git的關聯,以使刪除成功完成。

有人可以幫我嗎

您需要關閉Git倉庫。 就您的代碼而言,您正在丟棄引用。 我建議使用一個臨時目錄進行克隆,以便操作系統不必刪除它。 請參見Files中的各種createTempDirectory方法。

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

如果必須自己刪除目錄,請在git.close()之后git.close() 有關如何在JVM出口上執行此操作的信息 ,請參見此線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM