# Interface Directory

All Superinterfaces:
  `FileSystemLocation`

public interface Directory extends FileSystemLocation
Represents a directory at some fixed location on the file system.

Note: This interface is not intended for implementation by build script or plugin authors. An instance of this class can be created using the `dir(String)` method or using various methods on `ProjectLayout` such as `ProjectLayout.getProjectDirectory()`.

Since:
  4.1

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Directory`
  `dir(String path)`
  Returns a `Directory` whose location is the given path, resolved relative to this directory.
  `Provider<Directory>`
  `dir(Provider<? extends CharSequence> path)`
  Returns a `Provider` whose value is a `Directory` whose location is the given path resolved relative to this directory.
  `RegularFile`
  `file(String path)`
  Returns a `RegularFile` whose location is the given path, resolved relative to this directory.
  `Provider<RegularFile>`
  `file(Provider<? extends CharSequence> path)`
  Returns a `Provider` whose value is a `RegularFile` whose location is the given path resolved relative to this directory.
  `FileCollection`
  `files(@Nullable Object... paths)`
  Returns a `FileCollection` containing the given files, whose locations are the given paths resolved relative to this directory, as defined by `Project.files(Object...)`.
  `File`
  `getAsFile()`
  Returns the location of this directory, as an absolute `File`.
  `FileTree`
  `getAsFileTree()`
  Returns a `FileTree` that allows the files and directories contained in this directory to be queried.

- ## Method Details

  - ### getAsFile

    File getAsFile()
    Returns the location of this directory, as an absolute `File`.
    Specified by:
      `getAsFile` in interface `FileSystemLocation`
    Returns:
      the File
    Since:
      4.2

  - ### getAsFileTree

    FileTree getAsFileTree()
    Returns a `FileTree` that allows the files and directories contained in this directory to be queried.

  - ### dir

    Directory dir(String path)
    Returns a `Directory` whose location is the given path, resolved relative to this directory.
    Parameters:
      `path` - The path. Can be absolute.
    Returns:
      The directory.

  - ### dir

    Provider<Directory> dir(Provider<? extends CharSequence> path)
    Returns a `Provider` whose value is a `Directory` whose location is the given path resolved relative to this directory.

    The return value is live and the provided `path` is queried each time the return value is queried.

    Parameters:
      `path` - The path provider. Can have value that is an absolute path.
    Returns:
      The provider.

  - ### file

    RegularFile file(String path)
    Returns a `RegularFile` whose location is the given path, resolved relative to this directory.
    Parameters:
      `path` - The path. Can be absolute.
    Returns:
      The file.

  - ### file

    Provider<RegularFile> file(Provider<? extends CharSequence> path)
    Returns a `Provider` whose value is a `RegularFile` whose location is the given path resolved relative to this directory.

    The return value is live and the provided `path` is queried each time the return value is queried.

    Parameters:
      `path` - The path provider. Can have value that is an absolute path.
    Returns:
      The file.

  - ### files

    FileCollection files(@Nullable Object... paths)
    Returns a `FileCollection` containing the given files, whose locations are the given paths resolved relative to this directory, as defined by `Project.files(Object...)`. This method can also be used to create an empty collection, but the collection may not be mutated later.
    Parameters:
      `paths` - The paths to the files. May be empty.
    Returns:
      The file collection.
    Since:
      6.0