# Delete task issue, improvement needed imho

**URL:** https://discuss.gradle.org/t/delete-task-issue-improvement-needed-imho/17202
**Category:** Help/Discuss
**Created:** [April 28, 2016, 8:05am UTC](https://discuss.gradle.org/t/delete-task-issue-improvement-needed-imho/17202 "2016-04-28T08:05:48Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![fladnag](https://avatars.discourse-cdn.com/v4/letter/f/b5e925/32.png) [@fladnag](https://discuss.gradle.org/u/fladnag)
#### Post date: [April 28, 2016, 8:05am UTC](https://discuss.gradle.org/t/delete-task-issue-improvement-needed-imho/17202/1 "2016-04-28T08:05:48Z")

</div>

Hi,

I spent some hours on an unexpected result with Delete task.

I have a folder and I want to delete all simple files in folder root but not the folder itself or folders in folder, so I wrote :

```
ext.folder = 'test'
task cleanContentFolder(type:Delete) {
   file(ext.folder).listFiles().findAll{ !it.isDirectory() }.each {
      delete it 
   }
}

```

and… it’s almost works : files are deleted at configuration phase, when task is called or not.

I finally understand the “delete” keyword, interpreted in the each closure, is resolved to org.gradle.api.internal.project.AbstractProject.delete and not org.gradle.api.tasks.Delete.delete.

So… I resolve my issue with :

```
task cleanContentFolder(type:Delete) { deleteTask ->
   file(ext.folder).listFiles().findAll{ !it.isDirectory() }.each {
      deleteTask.delete it 
   }
}

```

but I think some improvements could be made to avoid this happening, for example rename “delete” method of Delete task to “deleteElement” or something else.

---

<div class="post-metadata">

### Author: ![Lance\_Java](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/lance_java/32/787_2.png) [@Lance\_Java](https://discuss.gradle.org/u/Lance_Java)
#### Post date: [April 28, 2016, 8:58am UTC](https://discuss.gradle.org/t/delete-task-issue-improvement-needed-imho/17202/2 "2016-04-28T08:58:34Z")

</div>

I’d likely solve this using a `FileTree`

```gradle
task cleanContentFolder(type:Delete) {
   def deleteMe = fileTree(ext.folder).matching {
      include { FileTreeElement element -> 
         return !element.directory 
      }
   }
   targetFiles = deleteMe
}

```

@see [FileTree.matching(groovy.lang.Closure)](https://docs.gradle.org/current/javadoc/org/gradle/api/file/FileTree.html#matching(groovy.lang.Closure))  
@see [PatternFilterable.include(groovy.lang.Closure)](https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/util/PatternFilterable.html#include(groovy.lang.Closure))
