2017-11-24 4 views
0

원격 github 저장소를 복제 한 폴더를 삭제할 수 없습니다.Java를 사용하여 원격 저장소에서 복제 로컬 폴더를 삭제할 수 없습니다.

내 코드는 다음과 같습니다.

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) 

나는 아파치 코 몬즈 IO에게 Fileutils의 클래스 forceDelete 방법을 사용하고 있습니다. I 이벤트가 FileUtils 클래스에서 다른 메서드를 시도했지만 폴더를 삭제할 수 없습니다.

자바를 사용하여 폴더의 저장소를 복제하는 데 JGit API를 사용하고 있습니다.

로컬 git 폴더와 원격 git의 연결을 해제해야합니다. 어떤 방법 으로든 삭제가 성공적으로 이루어 지도록해야합니다.

누군가 나를 도와 줄 수 있습니까?

답변

2

Git repo를 닫아야합니다. 코드가 의미하는 것처럼 참조를 버리고 있습니다. 복제 할 temp 디렉토리를 사용하는 것이 좋습니다. 따라서 삭제할 필요가 없으므로 OS가됩니다. 다양한 createTempDirectory 방법을 Files에서 확인하십시오.

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

직접 삭제해야하는 경우 git.close() 이후에 삭제하십시오. JVM 종료시 수행하는 방법은 this 스레드를 참조하십시오.

+0

답변 해 주셔서 감사합니다. git.close()가 문제를 해결했습니다. –

관련 문제