无法使用Java

时间:2017-11-24 19:57:03

标签: java git apache-commons jgit

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

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

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

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

1 个答案:

答案 0 :(得分:2)

您需要关闭Git仓库。正如你的代码所代表的那样,你丢弃了引用。我建议使用临时目录进行克隆,以便您不必删除它,操作系统会。请参阅Files中的各种createTempDirectory方法。

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

如果您必须自己删除目录,请在git.close()后执行。有关如何在JVM出口上执行此操作,请参阅this主题。