JavaFileManager.Location (Java SE 26 & JDK 26)
Description: declaration: module: java.compiler, package: javax.tools, interface: JavaFileManager, interface: Location
Keywords: javax.tools.JavaFileManager.Location interface

# Interface JavaFileManager.Location

All Known Implementing Classes:
  `DocumentationTool.Location, StandardLocation`

Enclosing interface:
  `JavaFileManager`

public static interface JavaFileManager.Location
Interface for locations of file objects. Used by file managers to determine where to place or search for file objects.

Informally, a `Location` corresponds to a "search path", such as a class path or module path, as used by command-line tools that use the default file system.

Some locations are typically used to identify a place in which a tool can find files to be read; others are typically used to identify a place where a tool can write files. If a location is used to identify a place for reading files, those files may be organized in a simple package/class hierarchy: such locations are described as package-oriented. Alternatively, the files may be organized in a module/package/class hierarchy: such locations are described as module-oriented. If a location is typically used to identify a place where a tool can write files, it is up to the tool that writes the files to specify how those files will be organized.

You can access the classes in a package-oriented location using methods like `JavaFileManager.getJavaFileForInput(JavaFileManager.Location, String, JavaFileObject.Kind)` or `JavaFileManager.list(JavaFileManager.Location, String, Set, boolean)`. It is not possible to directly list the classes in a module-oriented location. Instead, you can get a package-oriented location for any specific module using methods like `JavaFileManager.getLocationForModule(JavaFileManager.Location, String)` or `JavaFileManager.listLocationsForModules(JavaFileManager.Location)`.

Since:
  1.6

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `getName()`
  Returns the name of this location.
  `default boolean`
  `isModuleOrientedLocation()`
  Indicates if this location is module-oriented location, and therefore expected to contain classes in a module/package/class hierarchy, as compared to a package-oriented location, which is expected to contain classes in a package/class hierarchy.
  `boolean`
  `isOutputLocation()`
  Determines if this is an output location.

- ## Method Details

  - ### getName

    String getName()
    Returns the name of this location.
    Returns:
      a name

  - ### isOutputLocation

    boolean isOutputLocation()
    Determines if this is an output location. An output location is a location that is conventionally used for output.
    API Note:
      An output location may be used to write files in either a package-oriented organization or in a module-oriented organization.
    Returns:
      true if this is an output location, false otherwise

  - ### isModuleOrientedLocation

    default boolean isModuleOrientedLocation()
    Indicates if this location is module-oriented location, and therefore expected to contain classes in a module/package/class hierarchy, as compared to a package-oriented location, which is expected to contain classes in a package/class hierarchy. The result of this method is undefined if this is an output location.
    Implementation Requirements:
      This implementation returns true if the name includes the word "MODULE".
    Returns:
      true if this location is expected to contain modules
    Since:
      9