ViewFileSystem (Apache Hadoop Main 3.5.0 API)
Description: declaration: package: org.apache.hadoop.fs.viewfs, class: ViewFileSystem

Package org.apache.hadoop.fs.viewfs

# Class ViewFileSystem

java.lang.Object
org.apache.hadoop.conf.Configured
org.apache.hadoop.fs.FileSystem
org.apache.hadoop.fs.viewfs.ViewFileSystem

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `Configurable`, `BulkDeleteSource`, `org.apache.hadoop.fs.PathCapabilities`, `org.apache.hadoop.security.token.DelegationTokenIssuer`

@Public @Evolving public class ViewFileSystem extends FileSystem
ViewFileSystem (extends the FileSystem interface) implements a client-side mount table. Its spec and implementation is identical to `ViewFs`.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `org.apache.hadoop.fs.viewfs.ViewFileSystem.MountPoint`
  MountPoint representation built from the configuration.

  ## Nested classes/interfaces inherited from class org.apache.hadoop.fs.FileSystem

  `org.apache.hadoop.fs.FileSystem.DirectoryEntries, org.apache.hadoop.fs.FileSystem.DirListingIterator<T extends FileStatus>, org.apache.hadoop.fs.FileSystem.Statistics`

- ## Field Summary

  ### Fields inherited from class org.apache.hadoop.fs.FileSystem

  `DEFAULT_FS, FS_DEFAULT_NAME_KEY, LOG, SHUTDOWN_HOOK_PRIORITY, statistics, TRASH_PREFIX, USER_HOME_PREFIX`

  ### Fields inherited from interface org.apache.hadoop.security.token.DelegationTokenIssuer

  `TOKEN_LOG`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ViewFileSystem()`
  This is the constructor with the signature needed by `FileSystem.createFileSystem(URI, Configuration)` After this constructor is called initialize() is called.
  `ViewFileSystem(Configuration conf)`
  Convenience Constructor for apps to call directly.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `access(Path path, FsAction mode)`
  Checks if the user can access a path.
  `FSDataOutputStream`
  `append(Path f, int bufferSize, Progressable progress)`
  Append to an existing file (optional operation).
  `void`
  `close()`
  Close this FileSystem instance.
  `FSDataOutputStream`
  `create(Path f, FsPermission permission, boolean overwrite, int bufferSize, short replication, long blockSize, Progressable progress)`
  Create an FSDataOutputStream at the indicated Path with write-progress reporting.
  `FSDataOutputStream`
  `createNonRecursive(Path f, FsPermission permission, EnumSet<CreateFlag> flags, int bufferSize, short replication, long blockSize, Progressable progress)`
  Opens an FSDataOutputStream at the indicated Path with write-progress reporting.
  `Path`
  `createSnapshot(Path path, String snapshotName)`
  Create a snapshot.
  `boolean`
  `delete(Path f)`
  Delete a file/directory.
  `boolean`
  `delete(Path f, boolean recursive)`
  Delete a file.
  `void`
  `deleteSnapshot(Path path, String snapshotName)`
  Delete a snapshot of a directory.
  `protected org.apache.hadoop.fs.viewfs.FsGetter`
  `fsGetter()`
  Gets file system creator instance.
  `AclStatus`
  `getAclStatus(Path path)`
  Gets the ACL of a file or directory.
  `Collection<? extends BlockStoragePolicySpi>`
  `getAllStoragePolicies()`
  Retrieve all the storage policies supported by this file system.
  `FileSystem[]`
  `getChildFileSystems()`
  Get all the immediate child FileSystems embedded in this FileSystem.
  `ContentSummary`
  `getContentSummary(Path f)`
  Return the `ContentSummary` of a given `Path`.
  `long`
  `getDefaultBlockSize()`
  Return the number of bytes that large input files should be optimally be split into to minimize I/O time.
  `long`
  `getDefaultBlockSize(Path f)`
  Return the number of bytes that large input files should be optimally be split into to minimize I/O time.
  `short`
  `getDefaultReplication()`
  Get the default replication.
  `short`
  `getDefaultReplication(Path f)`
  Get the default replication for a path.
  `Path`
  `getEnclosingRoot(Path path)`
  Return path of the enclosing root for a given path.
  `BlockLocation[]`
  `getFileBlockLocations(FileStatus fs, long start, long len)`
  Return an array containing hostnames, offset and size of portions of the given file.
  `FileChecksum`
  `getFileChecksum(Path f)`
  Get the checksum of a file, if the FS supports checksums.
  `FileChecksum`
  `getFileChecksum(Path f, long length)`
  Get the checksum of a file, from the beginning of the file till the specific length.
  `FileStatus`
  `getFileStatus(Path f)`
  Return a file status object that represents the path.
  `Path`
  `getHomeDirectory()`
  Return the current user's home directory in this FileSystem.
  `Path`
  `getLinkTarget(Path path)`
  See `FileContext.getLinkTarget(Path)`.
  `org.apache.hadoop.fs.viewfs.ViewFileSystem.MountPoint[]`
  `getMountPoints()`
  `QuotaUsage`
  `getQuotaUsage(Path f)`
  Return the `QuotaUsage` of a given `Path`.
  `String`
  `getScheme()`
  Return the protocol scheme for the FileSystem.
  `FsServerDefaults`
  `getServerDefaults()`
  Return a set of server default configuration values.
  `FsServerDefaults`
  `getServerDefaults(Path f)`
  Return a set of server default configuration values.
  `FsStatus`
  `getStatus()`
  Returns a status object describing the use and capacity of the filesystem.
  `FsStatus`
  `getStatus(Path p)`
  Returns a status object describing the use and capacity of the filesystem.
  `BlockStoragePolicySpi`
  `getStoragePolicy(Path src)`
  Query the effective storage policy ID for the given file or directory.
  `Path`
  `getTrashRoot(Path path)`
  Get the trash root directory for current user when the path specified is deleted.
  `Collection<FileStatus>`
  `getTrashRoots(boolean allUsers)`
  Get all the trash roots for current user or all users.
  `URI`
  `getUri()`
  Returns a URI which identifies this FileSystem.
  `long`
  `getUsed()`
  Return the total size of all files under "/", if `Constants.CONFIG_VIEWFS_LINK_MERGE_SLASH` is supported and is a valid mount point.
  `Path`
  `getWorkingDirectory()`
  Get the current working directory for the given FileSystem
  `byte[]`
  `getXAttr(Path path, String name)`
  Get an xattr name and value for a file or directory.
  `Map<String,byte[]>`
  `getXAttrs(Path path)`
  Get all of the xattr name/value pairs for a file or directory.
  `Map<String,byte[]>`
  `getXAttrs(Path path, List<String> names)`
  Get all of the xattrs name/value pairs for a file or directory.
  `boolean`
  `hasPathCapability(Path path, String capability)`
  Reject the concat operation; forward the rest to the viewed FS.
  `void`
  `initialize(URI theUri, Configuration conf)`
  Called after a new FileSystem instance is constructed.
  `org.apache.hadoop.fs.RemoteIterator<LocatedFileStatus>`
  `listLocatedStatus(Path f, PathFilter filter)`
  List a directory.
  `FileStatus[]`
  `listStatus(Path f)`
  List the statuses of the files/directories in the given path if the path is a directory.
  `List<String>`
  `listXAttrs(Path path)`
  Get all of the xattr names for a file or directory.
  `boolean`
  `mkdirs(Path dir)`
  Call `FileSystem.mkdirs(Path, FsPermission)` with default permission.
  `boolean`
  `mkdirs(Path dir, FsPermission permission)`
  Make the given file and all non-existent parents into directories.
  `void`
  `modifyAclEntries(Path path, List<AclEntry> aclSpec)`
  Modifies ACL entries of files and directories.
  `FSDataInputStream`
  `open(Path f, int bufferSize)`
  Opens an FSDataInputStream at the indicated Path.
  `void`
  `removeAcl(Path path)`
  Removes all but the base ACL entries of files and directories.
  `void`
  `removeAclEntries(Path path, List<AclEntry> aclSpec)`
  Removes ACL entries from files and directories.
  `void`
  `removeDefaultAcl(Path path)`
  Removes all default ACL entries from files and directories.
  `void`
  `removeXAttr(Path path, String name)`
  Remove an xattr of a file or directory.
  `boolean`
  `rename(Path src, Path dst)`
  Renames Path src to Path dst.
  `void`
  `renameSnapshot(Path path, String snapshotOldName, String snapshotNewName)`
  Rename a snapshot.
  `Path`
  `resolvePath(Path f)`
  Return the fully-qualified path of path, resolving the path through any symlinks or mount point.
  `void`
  `satisfyStoragePolicy(Path src)`
  Set the source path to satisfy storage policy.
  `void`
  `setAcl(Path path, List<AclEntry> aclSpec)`
  Fully replaces ACL of files and directories, discarding all existing entries.
  `void`
  `setOwner(Path f, String username, String groupname)`
  Set owner of a path (i.e. a file or a directory).
  `void`
  `setPermission(Path f, FsPermission permission)`
  Set permission of a path.
  `boolean`
  `setReplication(Path f, short replication)`
  Set the replication for an existing file.
  `void`
  `setStoragePolicy(Path src, String policyName)`
  Set the storage policy for a given file or directory.
  `void`
  `setTimes(Path f, long mtime, long atime)`
  Set access time of a file.
  `void`
  `setVerifyChecksum(boolean verifyChecksum)`
  Set the verify checksum flag.
  `void`
  `setWorkingDirectory(Path new_dir)`
  Set the current working directory for the given FileSystem.
  `void`
  `setWriteChecksum(boolean writeChecksum)`
  Set the write checksum flag.
  `void`
  `setXAttr(Path path, String name, byte[] value, EnumSet<XAttrSetFlag> flag)`
  Set an xattr of a file or directory.
  `boolean`
  `truncate(Path f, long newLength)`
  Truncate the file in the indicated path to the indicated size.
  `void`
  `unsetStoragePolicy(Path src)`
  Unset the storage policy set for a given file or directory.

  ### Methods inherited from class org.apache.hadoop.fs.FileSystem

  `append, append, append, append, appendFile, areSymlinksEnabled, cancelDeleteOnExit, canonicalizeUri, checkPath, clearStatistics, closeAll, closeAllForUGI, completeLocalOutput, concat, copyFromLocalFile, copyFromLocalFile, copyFromLocalFile, copyFromLocalFile, copyToLocalFile, copyToLocalFile, copyToLocalFile, create, create, create, create, create, create, create, create, create, create, create, create, createBulkDelete, createDataInputStreamBuilder, createDataInputStreamBuilder, createDataOutputStreamBuilder, createFile, createMultipartUploader, createNewFile, createNonRecursive, createNonRecursive, createPathHandle, createSnapshot, createSymlink, deleteOnExit, enableSymlinks, exists, fixRelativePart, get, get, get, getAdditionalTokenIssuers, getAllStatistics, getBlockSize, getCanonicalServiceName, getCanonicalUri, getDefaultPort, getDefaultUri, getDelegationToken, getFileBlockLocations, getFileLinkStatus, getFileSystemClass, getFSofPath, getGlobalStorageStatistics, getInitialWorkingDirectory, getLength, getLocal, getName, getNamed, getPathHandle, getReplication, getStatistics, getStatistics, getStorageStatistics, getUsed, globStatus, globStatus, isDirectory, isFile, listCorruptFileBlocks, listFiles, listLocatedStatus, listStatus, listStatus, listStatus, listStatusBatch, listStatusIterator, makeQualified, mkdirs, moveFromLocalFile, moveFromLocalFile, moveToLocalFile, msync, newInstance, newInstance, newInstance, newInstanceLocal, open, open, open, openFile, openFile, openFileWithOptions, openFileWithOptions, primitiveCreate, primitiveMkdir, primitiveMkdir, printStatistics, processDeleteOnExit, rename, resolveLink, setDefaultUri, setDefaultUri, setQuota, setQuotaByStorageType, setXAttr, startLocalOutput, supportsSymlinks`

  ### Methods inherited from class org.apache.hadoop.conf.Configured

  `getConf, setConf`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface org.apache.hadoop.security.token.DelegationTokenIssuer

  `addDelegationTokens`

- ## Constructor Details

  - ### ViewFileSystem

    public ViewFileSystem() throws IOException
    This is the constructor with the signature needed by `FileSystem.createFileSystem(URI, Configuration)` After this constructor is called initialize() is called.
    Throws:
      `IOException` - raised on errors performing I/O.

  - ### ViewFileSystem

    public ViewFileSystem(Configuration conf) throws IOException
    Convenience Constructor for apps to call directly.
    Parameters:
      `conf` - configuration.
    Throws:
      `IOException` - raised on errors performing I/O.

- ## Method Details

  - ### fsGetter

    protected org.apache.hadoop.fs.viewfs.FsGetter fsGetter()
    Gets file system creator instance.
    Returns:
      fs getter.

  - ### getScheme

    public String getScheme()
    Return the protocol scheme for the FileSystem.
    Overrides:
      `getScheme` in class `FileSystem`
    Returns:
      `viewfs`

  - ### initialize

    public void initialize(URI theUri, Configuration conf) throws IOException
    Called after a new FileSystem instance is constructed.
    Overrides:
      `initialize` in class `FileSystem`
    Parameters:
      `theUri` - a uri whose authority section names the host, port, etc. for this FileSystem
      `conf` - the configuration
    Throws:
      `IOException` - on any failure to initialize this instance.

  - ### getUri

    public URI getUri()
    Description copied from class: `FileSystem`
    Returns a URI which identifies this FileSystem.
    Specified by:
      `getUri` in class `FileSystem`
    Returns:
      the URI of this filesystem.

  - ### resolvePath

    public Path resolvePath(Path f) throws IOException
    Description copied from class: `FileSystem`
    Return the fully-qualified path of path, resolving the path through any symlinks or mount point.
    Overrides:
      `resolvePath` in class `FileSystem`
    Parameters:
      `f` - path to be resolved
    Returns:
      fully qualified path
    Throws:
      `FileNotFoundException` - if the path is not present
      `IOException` - for any other error

  - ### getHomeDirectory

    public Path getHomeDirectory()
    Description copied from class: `FileSystem`
    Return the current user's home directory in this FileSystem. The default implementation returns `"/user/$USER/"`.
    Overrides:
      `getHomeDirectory` in class `FileSystem`
    Returns:
      the path.

  - ### getWorkingDirectory

    public Path getWorkingDirectory()
    Description copied from class: `FileSystem`
    Get the current working directory for the given FileSystem
    Specified by:
      `getWorkingDirectory` in class `FileSystem`
    Returns:
      the directory pathname

  - ### setWorkingDirectory

    public void setWorkingDirectory(Path new_dir)
    Description copied from class: `FileSystem`
    Set the current working directory for the given FileSystem. All relative paths will be resolved relative to it.
    Specified by:
      `setWorkingDirectory` in class `FileSystem`
    Parameters:
      `new_dir` - Path of new working directory

  - ### append

    public FSDataOutputStream append(Path f, int bufferSize, Progressable progress) throws IOException
    Description copied from class: `FileSystem`
    Append to an existing file (optional operation).
    Specified by:
      `append` in class `FileSystem`
    Parameters:
      `f` - the existing file to be appended.
      `bufferSize` - the size of the buffer to be used.
      `progress` - for reporting progress if it is not null.
    Returns:
      output stream.
    Throws:
      `IOException` - IO failure

  - ### createNonRecursive

    public FSDataOutputStream createNonRecursive(Path f, FsPermission permission, EnumSet<CreateFlag> flags, int bufferSize, short replication, long blockSize, Progressable progress) throws IOException
    Description copied from class: `FileSystem`
    Opens an FSDataOutputStream at the indicated Path with write-progress reporting. Same as create(), except fails if parent directory doesn't already exist.
    Overrides:
      `createNonRecursive` in class `FileSystem`
    Parameters:
      `f` - the file name to open
      `permission` - file permission
      `flags` - `CreateFlag`s to use for this stream.
      `bufferSize` - the size of the buffer to be used.
      `replication` - required block replication for the file.
      `blockSize` - block size
      `progress` - the progress reporter
    Returns:
      output stream.
    Throws:
      `IOException` - IO failure
    See Also:
      - `FileSystem.setPermission(Path, FsPermission)`

  - ### create

    public FSDataOutputStream create(Path f, FsPermission permission, boolean overwrite, int bufferSize, short replication, long blockSize, Progressable progress) throws IOException
    Description copied from class: `FileSystem`
    Create an FSDataOutputStream at the indicated Path with write-progress reporting.
    Specified by:
      `create` in class `FileSystem`
    Parameters:
      `f` - the file name to open
      `permission` - file permission
      `overwrite` - if a file with this name already exists, then if true, the file will be overwritten, and if false an error will be thrown.
      `bufferSize` - the size of the buffer to be used.
      `replication` - required block replication for the file.
      `blockSize` - block size
      `progress` - the progress reporter
    Returns:
      output stream.
    Throws:
      `IOException` - IO failure
    See Also:
      - `FileSystem.setPermission(Path, FsPermission)`

  - ### delete

    public boolean delete(Path f, boolean recursive) throws AccessControlException, FileNotFoundException, IOException
    Description copied from class: `FileSystem`
    Delete a file.
    Specified by:
      `delete` in class `FileSystem`
    Parameters:
      `f` - the path to delete.
      `recursive` - if path is a directory and set to true, the directory is deleted else throws an exception. In case of a file the recursive can be set to either true or false.
    Returns:
      true if delete is successful else false.
    Throws:
      `IOException` - IO failure
      `AccessControlException`
      `FileNotFoundException`

  - ### delete

    public boolean delete(Path f) throws AccessControlException, FileNotFoundException, IOException
    Description copied from class: `FileSystem`
    Delete a file/directory.
    Overrides:
      `delete` in class `FileSystem`
    Parameters:
      `f` - the path.
    Returns:
      if delete success true, not false.
    Throws:
      `IOException` - IO failure.
      `AccessControlException`
      `FileNotFoundException`

  - ### getFileBlockLocations

    public BlockLocation[] getFileBlockLocations(FileStatus fs, long start, long len) throws IOException
    Description copied from class: `FileSystem`
    Return an array containing hostnames, offset and size of portions of the given file. For nonexistent file or regions, `null` is returned.

           if f == null :
             result = null
           elif f.getLen() <= start:
             result = []
           else result = [ locations(FS, b) for b in blocks(FS, p, s, s+l)]

    This call is most helpful with and distributed filesystem where the hostnames of machines that contain blocks of the given file can be determined. The default implementation returns an array containing one element:

         BlockLocation( { "localhost:9866" },  { "localhost" }, 0, file.getLen())

    In HDFS, if file is three-replicated, the returned array contains elements like:

         BlockLocation(offset: 0, length: BLOCK_SIZE,
           hosts: {"host1:9866", "host2:9866, host3:9866"})
         BlockLocation(offset: BLOCK_SIZE, length: BLOCK_SIZE,
           hosts: {"host2:9866", "host3:9866, host4:9866"})

    And if a file is erasure-coded, the returned BlockLocation are logical block groups. Suppose we have a RS_3_2 coded file (3 data units and 2 parity units). 1. If the file size is less than one stripe size, say 2 * CELL_SIZE, then there will be one BlockLocation returned, with 0 offset, actual file size and 4 hosts (2 data blocks and 2 parity blocks) hosting the actual blocks. 3. If the file size is less than one group size but greater than one stripe size, then there will be one BlockLocation returned, with 0 offset, actual file size with 5 hosts (3 data blocks and 2 parity blocks) hosting the actual blocks. 4. If the file size is greater than one group size, 3 * BLOCK_SIZE + 123 for example, then the result will be like:

         BlockLocation(offset: 0, length: 3 * BLOCK_SIZE, hosts: {"host1:9866",
           "host2:9866","host3:9866","host4:9866","host5:9866"})
         BlockLocation(offset: 3 * BLOCK_SIZE, length: 123, hosts: {"host1:9866",
           "host4:9866", "host5:9866"})

    Overrides:
      `getFileBlockLocations` in class `FileSystem`
    Parameters:
      `fs` - FilesStatus to get data from
      `start` - offset into the given file
      `len` - length for which to get locations for
    Returns:
      block location array.
    Throws:
      `IOException` - IO failure

  - ### getFileChecksum

    public FileChecksum getFileChecksum(Path f) throws AccessControlException, FileNotFoundException, IOException
    Description copied from class: `FileSystem`
    Get the checksum of a file, if the FS supports checksums.
    Overrides:
      `getFileChecksum` in class `FileSystem`
    Parameters:
      `f` - The file path
    Returns:
      The file checksum. The default return value is null, which indicates that no checksum algorithm is implemented in the corresponding FileSystem.
    Throws:
      `IOException` - IO failure
      `AccessControlException`
      `FileNotFoundException`

  - ### getFileChecksum

    public FileChecksum getFileChecksum(Path f, long length) throws AccessControlException, FileNotFoundException, IOException
    Description copied from class: `FileSystem`
    Get the checksum of a file, from the beginning of the file till the specific length.
    Overrides:
      `getFileChecksum` in class `FileSystem`
    Parameters:
      `f` - The file path
      `length` - The length of the file range for checksum calculation
    Returns:
      The file checksum or null if checksums are not supported.
    Throws:
      `IOException` - IO failure
      `AccessControlException`
      `FileNotFoundException`

  - ### getFileStatus

    public FileStatus getFileStatus(Path f) throws AccessControlException, FileNotFoundException, IOException
    Return a file status object that represents the path. If the given path is a symlink(mount link), the path will be resolved to a target path and it will get the resolved path's FileStatus object. It will not be represented as a symlink and isDirectory API returns true if the resolved path is a directory, false otherwise.
    Specified by:
      `getFileStatus` in class `FileSystem`
    Parameters:
      `f` - The path we want information from
    Returns:
      a FileStatus object
    Throws:
      `FileNotFoundException` - when the path does not exist
      `IOException` - see specific implementation
      `AccessControlException`

  - ### access

    public void access(Path path, FsAction mode) throws AccessControlException, FileNotFoundException, IOException
    Description copied from class: `FileSystem`
    Checks if the user can access a path. The mode specifies which access checks to perform. If the requested permissions are granted, then the method returns normally. If access is denied, then the method throws an `AccessControlException`.

    The default implementation calls `FileSystem.getFileStatus(Path)` and checks the returned permissions against the requested permissions. Note that the `FileSystem.getFileStatus(Path)` call will be subject to authorization checks. Typically, this requires search (execute) permissions on each directory in the path's prefix, but this is implementation-defined. Any file system that provides a richer authorization model (such as ACLs) may override the default implementation so that it checks against that model instead.

    In general, applications should avoid using this method, due to the risk of time-of-check/time-of-use race conditions. The permissions on a file may change immediately after the access call returns. Most applications should prefer running specific file system actions as the desired user represented by a `UserGroupInformation`.

    Parameters:
      `path` - Path to check
      `mode` - type of access to check
    Throws:
      `AccessControlException` - if access is denied
      `FileNotFoundException` - if the path does not exist
      `IOException` - see specific implementation

  - ### listStatus

    public FileStatus[] listStatus(Path f) throws AccessControlException, FileNotFoundException, IOException
    List the statuses of the files/directories in the given path if the path is a directory.

    Does not guarantee to return the List of files/directories status in a sorted order.

    Will not return null. Expect IOException upon access error. Note: listStatus considers listing from fallbackLink if available. If the same directory path is present in configured mount path as well as in fallback fs, then only the fallback path will be listed in the returned result except for link. If any of the the immediate children of the given path f is a symlink(mount link), the returned FileStatus object of that children would be represented as a symlink. It will not be resolved to the target path and will not get the target path FileStatus object. The target path will be available via getSymlink on that children's FileStatus object. Since it represents as symlink, isDirectory on that children's FileStatus will return false. This behavior can be changed by setting an advanced configuration fs.viewfs.mount.links.as.symlinks to false. In this case, mount points will be represented as non-symlinks and all the file/directory attributes like permissions, isDirectory etc will be assigned from it's resolved target directory/file. If you want to get the FileStatus of target path for that children, you may want to use GetFileStatus API with that children's symlink path. Please see `getFileStatus(Path f)` Note: In ViewFileSystem, by default the mount links are represented as symlinks.

    Specified by:
      `listStatus` in class `FileSystem`
    Parameters:
      `f` - given path
    Returns:
      the statuses of the files/directories in the given patch
    Throws:
      `FileNotFoundException` - when the path does not exist
      `IOException` - see specific implementation
      `AccessControlException`

  - ### listLocatedStatus

    public org.apache.hadoop.fs.RemoteIterator<LocatedFileStatus> listLocatedStatus(Path f, PathFilter filter) throws FileNotFoundException, IOException
    Description copied from class: `FileSystem`
    List a directory. The returned results include its block location if it is a file The results are filtered by the given path filter
    Overrides:
      `listLocatedStatus` in class `FileSystem`
    Parameters:
      `f` - a path
      `filter` - a path filter
    Returns:
      an iterator that traverses statuses of the files/directories in the given path
    Throws:
      `FileNotFoundException` - if `f` does not exist
      `IOException` - if any I/O error occurred

  - ### mkdirs

    public boolean mkdirs(Path dir) throws IOException
    Description copied from class: `FileSystem`
    Call `FileSystem.mkdirs(Path, FsPermission)` with default permission.
    Overrides:
      `mkdirs` in class `FileSystem`
    Parameters:
      `dir` - path
    Returns:
      true if the directory was created
    Throws:
      `IOException` - IO failure

  - ### mkdirs

    public boolean mkdirs(Path dir, FsPermission permission) throws IOException
    Description copied from class: `FileSystem`
    Make the given file and all non-existent parents into directories. Has roughly the semantics of Unix @{code mkdir -p}. Existence of the directory hierarchy is not an error.
    Specified by:
      `mkdirs` in class `FileSystem`
    Parameters:
      `dir` - path to create
      `permission` - to apply to f
    Returns:
      if mkdir success true, not false.
    Throws:
      `IOException` - IO failure

  - ### open

    public FSDataInputStream open(Path f, int bufferSize) throws AccessControlException, FileNotFoundException, IOException
    Description copied from class: `FileSystem`
    Opens an FSDataInputStream at the indicated Path.
    Specified by:
      `open` in class `FileSystem`
    Parameters:
      `f` - the file name to open
      `bufferSize` - the size of the buffer to be used.
    Returns:
      input stream.
    Throws:
      `IOException` - IO failure
      `AccessControlException`
      `FileNotFoundException`

  - ### rename

    public boolean rename(Path src, Path dst) throws IOException
    Description copied from class: `FileSystem`
    Renames Path src to Path dst.
    Specified by:
      `rename` in class `FileSystem`
    Parameters:
      `src` - path to be renamed
      `dst` - new path after rename
    Returns:
      true if rename is successful
    Throws:
      `IOException` - on failure

  - ### truncate

    public boolean truncate(Path f, long newLength) throws IOException
    Description copied from class: `FileSystem`
    Truncate the file in the indicated path to the indicated size.
    - Fails if path is a directory.
    - Fails if path does not exist.
    - Fails if path is not closed.
    - Fails if new size is greater than current size.
    Overrides:
      `truncate` in class `FileSystem`
    Parameters:
      `f` - The path to the file to be truncated
      `newLength` - The size the file is to be truncated to
    Returns:
      `true` if the file has been truncated to the desired `newLength` and is immediately available to be reused for write operations such as `append`, or `false` if a background process of adjusting the length of the last block has been started, and clients should wait for it to complete before proceeding with further file updates.
    Throws:
      `IOException` - IO failure

  - ### setOwner

    public void setOwner(Path f, String username, String groupname) throws AccessControlException, FileNotFoundException, IOException
    Description copied from class: `FileSystem`
    Set owner of a path (i.e. a file or a directory). The parameters username and groupname cannot both be null.
    Overrides:
      `setOwner` in class `FileSystem`
    Parameters:
      `f` - The path
      `username` - If it is null, the original username remains unchanged.
      `groupname` - If it is null, the original groupname remains unchanged.
    Throws:
      `IOException` - IO failure
      `AccessControlException`
      `FileNotFoundException`

  - ### setPermission

    public void setPermission(Path f, FsPermission permission) throws AccessControlException, FileNotFoundException, IOException
    Description copied from class: `FileSystem`
    Set permission of a path.
    Overrides:
      `setPermission` in class `FileSystem`
    Parameters:
      `f` - The path
      `permission` - permission
    Throws:
      `IOException` - IO failure
      `AccessControlException`
      `FileNotFoundException`

  - ### setReplication

    public boolean setReplication(Path f, short replication) throws AccessControlException, FileNotFoundException, IOException
    Description copied from class: `FileSystem`
    Set the replication for an existing file. If a filesystem does not support replication, it will always return true: the check for a file existing may be bypassed. This is the default behavior.
    Overrides:
      `setReplication` in class `FileSystem`
    Parameters:
      `f` - file name
      `replication` - new replication
    Returns:
      true if successful, or the feature in unsupported; false if replication is supported but the file does not exist, or is a directory
    Throws:
      `IOException` - an IO failure.
      `AccessControlException`
      `FileNotFoundException`

  - ### setTimes

    public void setTimes(Path f, long mtime, long atime) throws AccessControlException, FileNotFoundException, IOException
    Description copied from class: `FileSystem`
    Set access time of a file.
    Overrides:
      `setTimes` in class `FileSystem`
    Parameters:
      `f` - The path
      `mtime` - Set the modification time of this file. The number of milliseconds since Jan 1, 1970. A value of -1 means that this call should not set modification time.
      `atime` - Set the access time of this file. The number of milliseconds since Jan 1, 1970. A value of -1 means that this call should not set access time.
    Throws:
      `IOException` - IO failure
      `AccessControlException`
      `FileNotFoundException`

  - ### modifyAclEntries

    public void modifyAclEntries(Path path, List<AclEntry> aclSpec) throws IOException
    Description copied from class: `FileSystem`
    Modifies ACL entries of files and directories. This method can add new ACL entries or modify the permissions on existing ACL entries. All existing ACL entries that are not specified in this call are retained without changes. (Modifications are merged into the current ACL.)
    Overrides:
      `modifyAclEntries` in class `FileSystem`
    Parameters:
      `path` - Path to modify
      `aclSpec` - List<AclEntry> describing modifications
    Throws:
      `IOException` - if an ACL could not be modified

  - ### removeAclEntries

    public void removeAclEntries(Path path, List<AclEntry> aclSpec) throws IOException
    Description copied from class: `FileSystem`
    Removes ACL entries from files and directories. Other ACL entries are retained.
    Overrides:
      `removeAclEntries` in class `FileSystem`
    Parameters:
      `path` - Path to modify
      `aclSpec` - List describing entries to remove
    Throws:
      `IOException` - if an ACL could not be modified

  - ### removeDefaultAcl

    public void removeDefaultAcl(Path path) throws IOException
    Description copied from class: `FileSystem`
    Removes all default ACL entries from files and directories.
    Overrides:
      `removeDefaultAcl` in class `FileSystem`
    Parameters:
      `path` - Path to modify
    Throws:
      `IOException` - if an ACL could not be modified

  - ### removeAcl

    public void removeAcl(Path path) throws IOException
    Description copied from class: `FileSystem`
    Removes all but the base ACL entries of files and directories. The entries for user, group, and others are retained for compatibility with permission bits.
    Overrides:
      `removeAcl` in class `FileSystem`
    Parameters:
      `path` - Path to modify
    Throws:
      `IOException` - if an ACL could not be removed

  - ### setAcl

    public void setAcl(Path path, List<AclEntry> aclSpec) throws IOException
    Description copied from class: `FileSystem`
    Fully replaces ACL of files and directories, discarding all existing entries.
    Overrides:
      `setAcl` in class `FileSystem`
    Parameters:
      `path` - Path to modify
      `aclSpec` - List describing modifications, which must include entries for user, group, and others for compatibility with permission bits.
    Throws:
      `IOException` - if an ACL could not be modified

  - ### getAclStatus

    public AclStatus getAclStatus(Path path) throws IOException
    Description copied from class: `FileSystem`
    Gets the ACL of a file or directory.
    Overrides:
      `getAclStatus` in class `FileSystem`
    Parameters:
      `path` - Path to get
    Returns:
      AclStatus describing the ACL of the file or directory
    Throws:
      `IOException` - if an ACL could not be read

  - ### setXAttr

    public void setXAttr(Path path, String name, byte[] value, EnumSet<XAttrSetFlag> flag) throws IOException
    Description copied from class: `FileSystem`
    Set an xattr of a file or directory. The name must be prefixed with the namespace followed by ".". For example, "user.attr".

    Refer to the HDFS extended attributes user documentation for details.

    Overrides:
      `setXAttr` in class `FileSystem`
    Parameters:
      `path` - Path to modify
      `name` - xattr name.
      `value` - xattr value.
      `flag` - xattr set flag
    Throws:
      `IOException` - IO failure

  - ### getXAttr

    public byte[] getXAttr(Path path, String name) throws IOException
    Description copied from class: `FileSystem`
    Get an xattr name and value for a file or directory. The name must be prefixed with the namespace followed by ".". For example, "user.attr".

    Refer to the HDFS extended attributes user documentation for details.

    Overrides:
      `getXAttr` in class `FileSystem`
    Parameters:
      `path` - Path to get extended attribute
      `name` - xattr name.
    Returns:
      byte[] xattr value.
    Throws:
      `IOException` - IO failure

  - ### getXAttrs

    public Map<String,byte[]> getXAttrs(Path path) throws IOException
    Description copied from class: `FileSystem`
    Get all of the xattr name/value pairs for a file or directory. Only those xattrs which the logged-in user has permissions to view are returned.

    Refer to the HDFS extended attributes user documentation for details.

    Overrides:
      `getXAttrs` in class `FileSystem`
    Parameters:
      `path` - Path to get extended attributes
    Returns:
      Map describing the XAttrs of the file or directory
    Throws:
      `IOException` - IO failure

  - ### getXAttrs

    public Map<String,byte[]> getXAttrs(Path path, List<String> names) throws IOException
    Description copied from class: `FileSystem`
    Get all of the xattrs name/value pairs for a file or directory. Only those xattrs which the logged-in user has permissions to view are returned.

    Refer to the HDFS extended attributes user documentation for details.

    Overrides:
      `getXAttrs` in class `FileSystem`
    Parameters:
      `path` - Path to get extended attributes
      `names` - XAttr names.
    Returns:
      Map describing the XAttrs of the file or directory
    Throws:
      `IOException` - IO failure

  - ### listXAttrs

    public List<String> listXAttrs(Path path) throws IOException
    Description copied from class: `FileSystem`
    Get all of the xattr names for a file or directory. Only those xattr names which the logged-in user has permissions to view are returned.

    Refer to the HDFS extended attributes user documentation for details.

    Overrides:
      `listXAttrs` in class `FileSystem`
    Parameters:
      `path` - Path to get extended attributes
    Returns:
      List<String> of the XAttr names of the file or directory
    Throws:
      `IOException` - IO failure

  - ### removeXAttr

    public void removeXAttr(Path path, String name) throws IOException
    Description copied from class: `FileSystem`
    Remove an xattr of a file or directory. The name must be prefixed with the namespace followed by ".". For example, "user.attr".

    Refer to the HDFS extended attributes user documentation for details.

    Overrides:
      `removeXAttr` in class `FileSystem`
    Parameters:
      `path` - Path to remove extended attribute
      `name` - xattr name
    Throws:
      `IOException` - IO failure

  - ### setVerifyChecksum

    public void setVerifyChecksum(boolean verifyChecksum)
    Description copied from class: `FileSystem`
    Set the verify checksum flag. This is only applicable if the corresponding filesystem supports checksums. By default doesn't do anything.
    Overrides:
      `setVerifyChecksum` in class `FileSystem`
    Parameters:
      `verifyChecksum` - Verify checksum flag

  - ### getDefaultBlockSize

    public long getDefaultBlockSize()
    Description copied from class: `FileSystem`
    Return the number of bytes that large input files should be optimally be split into to minimize I/O time.
    Overrides:
      `getDefaultBlockSize` in class `FileSystem`
    Returns:
      default block size.

  - ### getDefaultReplication

    public short getDefaultReplication()
    Description copied from class: `FileSystem`
    Get the default replication.
    Overrides:
      `getDefaultReplication` in class `FileSystem`
    Returns:
      the replication; the default value is "1".

  - ### getServerDefaults

    public FsServerDefaults getServerDefaults() throws IOException
    Description copied from class: `FileSystem`
    Return a set of server default configuration values.
    Overrides:
      `getServerDefaults` in class `FileSystem`
    Returns:
      server default configuration values
    Throws:
      `IOException` - IO failure

  - ### getDefaultBlockSize

    public long getDefaultBlockSize(Path f)
    Description copied from class: `FileSystem`
    Return the number of bytes that large input files should be optimally be split into to minimize I/O time. The given path will be used to locate the actual filesystem. The full path does not have to exist.
    Overrides:
      `getDefaultBlockSize` in class `FileSystem`
    Parameters:
      `f` - path of file
    Returns:
      the default block size for the path's filesystem

  - ### getDefaultReplication

    public short getDefaultReplication(Path f)
    Description copied from class: `FileSystem`
    Get the default replication for a path. The given path will be used to locate the actual FileSystem to query. The full path does not have to exist.
    Overrides:
      `getDefaultReplication` in class `FileSystem`
    Parameters:
      `f` - of the file
    Returns:
      default replication for the path's filesystem

  - ### getServerDefaults

    public FsServerDefaults getServerDefaults(Path f) throws IOException
    Description copied from class: `FileSystem`
    Return a set of server default configuration values.
    Overrides:
      `getServerDefaults` in class `FileSystem`
    Parameters:
      `f` - path is used to identify an FS since an FS could have another FS that it could be delegating the call to
    Returns:
      server default configuration values
    Throws:
      `IOException` - IO failure

  - ### getContentSummary

    public ContentSummary getContentSummary(Path f) throws IOException
    Description copied from class: `FileSystem`
    Return the `ContentSummary` of a given `Path`.
    Overrides:
      `getContentSummary` in class `FileSystem`
    Parameters:
      `f` - path to use
    Returns:
      content summary.
    Throws:
      `FileNotFoundException` - if the path does not resolve
      `IOException` - IO failure

  - ### getQuotaUsage

    public QuotaUsage getQuotaUsage(Path f) throws IOException
    Description copied from class: `FileSystem`
    Return the `QuotaUsage` of a given `Path`.
    Overrides:
      `getQuotaUsage` in class `FileSystem`
    Parameters:
      `f` - path to use
    Returns:
      the quota usage
    Throws:
      `IOException` - IO failure

  - ### setWriteChecksum

    public void setWriteChecksum(boolean writeChecksum)
    Description copied from class: `FileSystem`
    Set the write checksum flag. This is only applicable if the corresponding filesystem supports checksums. By default doesn't do anything.
    Overrides:
      `setWriteChecksum` in class `FileSystem`
    Parameters:
      `writeChecksum` - Write checksum flag

  - ### getChildFileSystems

    public FileSystem[] getChildFileSystems()
    Description copied from class: `FileSystem`
    Get all the immediate child FileSystems embedded in this FileSystem. It does not recurse and get grand children. If a FileSystem has multiple child FileSystems, then it must return a unique list of those FileSystems. Default is to return null to signify no children.
    Returns:
      FileSystems that are direct children of this FileSystem, or null for "no children"

  - ### getMountPoints

    public org.apache.hadoop.fs.viewfs.ViewFileSystem.MountPoint[] getMountPoints()

  - ### createSnapshot

    public Path createSnapshot(Path path, String snapshotName) throws IOException
    Description copied from class: `FileSystem`
    Create a snapshot.
    Overrides:
      `createSnapshot` in class `FileSystem`
    Parameters:
      `path` - The directory where snapshots will be taken.
      `snapshotName` - The name of the snapshot
    Returns:
      the snapshot path.
    Throws:
      `IOException` - IO failure

  - ### renameSnapshot

    public void renameSnapshot(Path path, String snapshotOldName, String snapshotNewName) throws IOException
    Description copied from class: `FileSystem`
    Rename a snapshot.
    Overrides:
      `renameSnapshot` in class `FileSystem`
    Parameters:
      `path` - The directory path where the snapshot was taken
      `snapshotOldName` - Old name of the snapshot
      `snapshotNewName` - New name of the snapshot
    Throws:
      `IOException` - IO failure

  - ### deleteSnapshot

    public void deleteSnapshot(Path path, String snapshotName) throws IOException
    Description copied from class: `FileSystem`
    Delete a snapshot of a directory.
    Overrides:
      `deleteSnapshot` in class `FileSystem`
    Parameters:
      `path` - The directory that the to-be-deleted snapshot belongs to
      `snapshotName` - The name of the snapshot
    Throws:
      `IOException` - IO failure

  - ### satisfyStoragePolicy

    public void satisfyStoragePolicy(Path src) throws IOException
    Description copied from class: `FileSystem`
    Set the source path to satisfy storage policy.
    Overrides:
      `satisfyStoragePolicy` in class `FileSystem`
    Parameters:
      `src` - The source path referring to either a directory or a file.
    Throws:
      `IOException` - If an I/O error occurred.

  - ### setStoragePolicy

    public void setStoragePolicy(Path src, String policyName) throws IOException
    Description copied from class: `FileSystem`
    Set the storage policy for a given file or directory.
    Overrides:
      `setStoragePolicy` in class `FileSystem`
    Parameters:
      `src` - file or directory path.
      `policyName` - the name of the target storage policy. The list of supported Storage policies can be retrieved via `FileSystem.getAllStoragePolicies()`.
    Throws:
      `IOException` - IO failure

  - ### unsetStoragePolicy

    public void unsetStoragePolicy(Path src) throws IOException
    Description copied from class: `FileSystem`
    Unset the storage policy set for a given file or directory.
    Overrides:
      `unsetStoragePolicy` in class `FileSystem`
    Parameters:
      `src` - file or directory path.
    Throws:
      `IOException` - IO failure

  - ### getStoragePolicy

    public BlockStoragePolicySpi getStoragePolicy(Path src) throws IOException
    Description copied from class: `FileSystem`
    Query the effective storage policy ID for the given file or directory.
    Overrides:
      `getStoragePolicy` in class `FileSystem`
    Parameters:
      `src` - file or directory path.
    Returns:
      storage policy for give file.
    Throws:
      `IOException` - IO failure

  - ### getAllStoragePolicies

    public Collection<? extends BlockStoragePolicySpi> getAllStoragePolicies() throws IOException
    Description copied from class: `FileSystem`
    Retrieve all the storage policies supported by this file system.
    Overrides:
      `getAllStoragePolicies` in class `FileSystem`
    Returns:
      all storage policies supported by this filesystem.
    Throws:
      `IOException` - IO failure

  - ### getTrashRoot

    public Path getTrashRoot(Path path)
    Get the trash root directory for current user when the path specified is deleted. If FORCE_INSIDE_MOUNT_POINT flag is not set, return the default trash root from targetFS. When FORCE_INSIDE_MOUNT_POINT is set to true,
    1. If the trash root for path p is in the same mount point as path p, and one of:
       1. The mount point isn't at the top of the target fs.
       2. The resolved path of path is root (in fallback FS).
       3. The trash isn't in user's target fs home directory get the corresponding viewFS path for the trash root and return it.
    2. else, return the trash root under the root of the mount point (/{mntpoint}/.Trash/{user}).
    These conditions handle several different important cases:
    - File systems may need to have more local trash roots, such as encryption zones or snapshot roots.
    - The fallback mount should use the user's home directory.
    - Cloud storage systems should not use trash in an implicity defined home directory, per a container, unless it is the fallback fs.
    Overrides:
      `getTrashRoot` in class `FileSystem`
    Parameters:
      `path` - the trash root of the path to be determined.
    Returns:
      the trash root path.

  - ### getTrashRoots

    public Collection<FileStatus> getTrashRoots(boolean allUsers)
    Get all the trash roots for current user or all users. When FORCE_INSIDE_MOUNT_POINT is set to true, we also return trash roots under the root of each mount point, with their viewFS paths.
    Overrides:
      `getTrashRoots` in class `FileSystem`
    Parameters:
      `allUsers` - return trash roots for all users if true.
    Returns:
      all Trash root directories.

  - ### getStatus

    public FsStatus getStatus() throws IOException
    Description copied from class: `FileSystem`
    Returns a status object describing the use and capacity of the filesystem. If the filesystem has multiple partitions, the use and capacity of the root partition is reflected.
    Overrides:
      `getStatus` in class `FileSystem`
    Returns:
      a FsStatus object
    Throws:
      `IOException` - see specific implementation

  - ### getStatus

    public FsStatus getStatus(Path p) throws IOException
    Description copied from class: `FileSystem`
    Returns a status object describing the use and capacity of the filesystem. If the filesystem has multiple partitions, the use and capacity of the partition pointed to by the specified path is reflected.
    Overrides:
      `getStatus` in class `FileSystem`
    Parameters:
      `p` - Path for which status should be obtained. null means the default partition.
    Returns:
      a FsStatus object
    Throws:
      `IOException` - see specific implementation

  - ### getUsed

    public long getUsed() throws IOException
    Return the total size of all files under "/", if `Constants.CONFIG_VIEWFS_LINK_MERGE_SLASH` is supported and is a valid mount point. Else, throw NotInMountpointException.
    Overrides:
      `getUsed` in class `FileSystem`
    Returns:
      the number of path used.
    Throws:
      `IOException` - raised on errors performing I/O.

  - ### getLinkTarget

    public Path getLinkTarget(Path path) throws IOException
    Description copied from class: `FileSystem`
    See `FileContext.getLinkTarget(Path)`.
    Overrides:
      `getLinkTarget` in class `FileSystem`
    Parameters:
      `path` - the path.
    Returns:
      the path.
    Throws:
      `IOException` - IO failure.

  - ### hasPathCapability

    public boolean hasPathCapability(Path path, String capability) throws IOException
    Reject the concat operation; forward the rest to the viewed FS.
    Specified by:
      `hasPathCapability` in interface `org.apache.hadoop.fs.PathCapabilities`
    Overrides:
      `hasPathCapability` in class `FileSystem`
    Parameters:
      `path` - path to query the capability of.
      `capability` - string to query the stream support for.
    Returns:
      the capability
    Throws:
      `IOException` - if there is no resolved FS, or it raises an IOE.

  - ### getEnclosingRoot

    public Path getEnclosingRoot(Path path) throws IOException
    Description copied from class: `FileSystem`
    Return path of the enclosing root for a given path. The enclosing root path is a common ancestor that should be used for temp and staging dirs as well as within encryption zones and other restricted directories. Call makeQualified on the param path to ensure its part of the correct filesystem.
    Overrides:
      `getEnclosingRoot` in class `FileSystem`
    Parameters:
      `path` - file path to find the enclosing root path for
    Returns:
      a path to the enclosing root
    Throws:
      `IOException` - early checks like failure to resolve path cause IO failures

  - ### close

    public void close() throws IOException
    Description copied from class: `FileSystem`
    Close this FileSystem instance. Will release any held locks, delete all files queued for deletion through calls to `FileSystem.deleteOnExit(Path)`, and remove this FS instance from the cache, if cached. After this operation, the outcome of any method call on this FileSystem instance, or any input/output stream created by it is undefined.
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Overrides:
      `close` in class `FileSystem`
    Throws:
      `IOException` - IO failure