# Interface FileTree

All Superinterfaces:
  `AntBuilderAware, Buildable, FileCollection, Iterable<File>`

All Known Subinterfaces:
  `AntlrSourceDirectorySet, ConfigurableFileTree, GroovySourceDirectorySet, ScalaSourceDirectorySet, SourceDirectorySet`

public interface FileTree extends FileCollection

A `FileTree` represents a hierarchy of files. It extends `FileCollection` to add hierarchy query and manipulation methods. You typically use a `FileTree` to represent files to copy or the contents of an archive.

You can obtain a `FileTree` instance using `Project.fileTree(java.util.Map)`, `Project.zipTree(Object)` or `Project.tarTree(Object)`.

The order of the files in a `FileTree` is not stable, even on a single computer.

Since:
  0.8

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface FileCollection

  `FileCollection.AntType`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `FileTree`
  `getAsFileTree()`
  Returns this.
  `Set<File>`
  `getFiles()`
  Returns the contents of this tree as a flattened Set.
  `FileTree`
  `matching(Closure filterConfigClosure)`
  Restricts the contents of this tree to those files matching the given filter.
  `FileTree`
  `matching(Action<? super PatternFilterable> filterConfigAction)`
  Restricts the contents of this tree to those files matching the given filter.
  `FileTree`
  `matching(PatternFilterable patterns)`
  Restricts the contents of this tree to those files matching the given filter.
  `FileTree`
  `plus(FileTree fileTree)`
  Returns a `FileTree` which contains the union of this tree and the given tree.
  `FileTree`
  `visit(Closure visitor)`
  Visits the files and directories in this file tree.
  `FileTree`
  `visit(Action<? super FileVisitDetails> visitor)`
  Visits the files and directories in this file tree.
  `FileTree`
  `visit(FileVisitor visitor)`
  Visits the files and directories in this file tree.

  ### Methods inherited from interface Buildable

  `getBuildDependencies`

  ### Methods inherited from interface FileCollection

  `addToAntBuilder, addToAntBuilder, contains, filter, filter, getAsPath, getElements, getSingleFile, isEmpty, minus, plus`

  ### Methods inherited from interface Iterable

  `forEach, iterator, spliterator`

- ## Method Details

  - ### matching

    FileTree matching(@DelegatesTo(PatternFilterable.class) Closure filterConfigClosure)

    Restricts the contents of this tree to those files matching the given filter. The filtered tree is live, so that any changes to this tree are reflected in the filtered tree.

    The given closure is used to configure the filter. A `PatternFilterable` is passed to the closure as its delegate. Only files which match the specified include patterns will be included in the filtered tree. Any files which match the specified exclude patterns will be excluded from the filtered tree.

    Parameters:
      `filterConfigClosure` - the closure to use to configure the filter.
    Returns:
      The filtered tree.
    Since:
      0.8

  - ### matching

    FileTree matching(Action<? super PatternFilterable> filterConfigAction)

    Restricts the contents of this tree to those files matching the given filter. The filtered tree is live, so that any changes to this tree are reflected in the filtered tree.

    The given action is used to configure the filter. A `PatternFilterable` is passed to the action. Only files which match the specified include patterns will be included in the filtered tree. Any files which match the specified exclude patterns will be excluded from the filtered tree.

    Parameters:
      `filterConfigAction` - Action to use to configure the filter.
    Returns:
      The filtered tree.
    Since:
      3.3

  - ### matching

    FileTree matching(PatternFilterable patterns)

    Restricts the contents of this tree to those files matching the given filter. The filtered tree is live, so that any changes to this tree are reflected in the filtered tree.

    The given pattern set is used to configure the filter. Only files which match the specified include patterns will be included in the filtered tree. Any files which match the specified exclude patterns will be excluded from the filtered tree.

    Parameters:
      `patterns` - the pattern set to use to configure the filter.
    Returns:
      The filtered tree.
    Since:
      0.8

  - ### visit

    FileTree visit(FileVisitor visitor)
    Visits the files and directories in this file tree. Files are visited in depth-first prefix order, so that a directory is visited before its children.
    Parameters:
      `visitor` - The visitor.
    Returns:
      this
    Since:
      0.8

  - ### visit

    FileTree visit(@DelegatesTo(FileVisitDetails.class) Closure visitor)
    Visits the files and directories in this file tree. Files are visited in depth-first prefix order, so that a directory is visited before its children. The file/directory to be visited is passed to the given closure as a `FileVisitDetails`
    Parameters:
      `visitor` - The visitor.
    Returns:
      this
    Since:
      0.8

  - ### visit

    FileTree visit(Action<? super FileVisitDetails> visitor)
    Visits the files and directories in this file tree. Files are visited in depth-first prefix order, so that a directory is visited before its children. The file/directory to be visited is passed to the given action as a `FileVisitDetails`
    Parameters:
      `visitor` - The visitor.
    Returns:
      this
    Since:
      3.3

  - ### plus

    FileTree plus(FileTree fileTree)
    Returns a `FileTree` which contains the union of this tree and the given tree. The returned tree is live, so that changes to either this tree or the other source tree are reflected in the returned tree.
    Parameters:
      `fileTree` - The tree. Should not be null.
    Returns:
      The union of this tree and the given tree.
    Since:
      0.8

  - ### getAsFileTree

    FileTree getAsFileTree()
    Returns this.
    Specified by:
      `getAsFileTree` in interface `FileCollection`
    Returns:
      this

  - ### getFiles

    Set<File> getFiles()
    Returns the contents of this tree as a flattened Set.

    The order of the files in a `FileTree` is not stable, even on a single computer.

    Specified by:
      `getFiles` in interface `FileCollection`
    Returns:
      The files. Returns an empty set if this tree is empty.