Вам нужно рекурсивно удалять файлы в правильном порядке.Некоторые файлы могут скоро отсутствовать (например, git locks file), поэтому удалять их нужно только в том случае, если файл все еще существует.
Git
реализует AutoCloseable
, поэтому его следует использовать с try-with-resources оператор.
Я сделаю что-то вроде этого:
try (Git git = Git.cloneRepository()
.setDirectory(file)
.call()) {
} catch (GitAPIException e) {
Files.walkFileTree(file.toPath(), new DeleteFileVisitor())
}
DeleteFileVisitor.java
public class DeleteFileVisitor extends SimpleFileVisitor<Path> {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes basicFileAttributes) throws IOException {
Files.deleteIfExists(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path directory, IOException ioException) throws IOException {
Files.deleteIfExists(directory);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exception) {
// log error
return FileVisitResult.CONTINUE;
}
}