2014-03-06 2 views
0

다음 폴더/파일이 있습니다.EMPTY 삭제 디렉토리 또는 폴더/서브 폴더

어떻게 빈 디렉토리/하위 폴더 만 삭제할 수 있도록 Gradle/Groovy에서 코딩 할 수 있습니까? 위의 샘플보기에서 'A/BB', 'A/ZZZ/3'을 삭제합니다. 실제 사례에는 그러한 폴더가 많이 있습니다.

나는 그 것으로

tasks.withType(Delete) { includeEmptyDirs = true } 

가> 전화> 내가 Gradle을 사용하지 않으려는

tasks.withType(Delete) { includeEmptyDirs = false } 

를 작동하지 않았다 개미의 방법을 작동하지 않았다

시도 내 마지막 수단. 또한 빈 폴더마다 명시 적 delete 문을 작성하여 각 빈 폴더를 삭제하지 않으려는 경우

사례 2 : 나는 다음과 같은 실행하는 경우 :

delete fileTree (dir: "A", include: "**/*.txt") 

이 위의 cmd를이 폴더 아래에있는 A 모든 .txt 파일과 그 아래에있는 모든 하위 폴더를 제거합니다. 이제, 이렇게하면 "A/ZZZ/1"을 "빈 폴더"에 대한 유효한 후보로 만들어서 삭제하려는 경우도 있습니다.

답변

3

Javadoc for FileTree을 사용하면 "A"아래의 빈 디렉토리를 삭제하려면 다음을 고려하십시오. Gradle 1.11 사용 :

+0

감사합니다. 마이크, 나는 그것을 시도 할 것입니다. –

1

빈 폴더 만 포함하는 폴더를 모두 삭제하려면이 코드가 도움이 될 수 있습니다.

def emptyDirs = [] 

    project.fileTree(dir: destdir).visit { 
     def File f = it.file 

     if (f.isDirectory()) { 
      def children = project.fileTree(f).filter { it.isFile() }.files 
      if (children.size() == 0) { 
       emptyDirs << f 
      } 
     } 
    } 

    // reverse so that we do the deepest folders first 
    emptyDirs.reverseEach { it.delete() }