Class FilterFileSystem
- All Implemented Interfaces:
Closeable,AutoCloseable,Configurable,BulkDeleteSource,org.apache.hadoop.fs.PathCapabilities,org.apache.hadoop.security.token.DelegationTokenIssuer
- Direct Known Subclasses:
ChecksumFileSystem
FilterFileSystem contains
some other file system, which it uses as
its basic file system, possibly transforming
the data along the way or providing additional
functionality. The class FilterFileSystem
itself simply overrides all methods of
FileSystem with versions that
pass all requests to the contained file
system. Subclasses of FilterFileSystem
may further override some of these methods
and may also provide additional methods
and fields.-
Nested Class Summary
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
FieldsFields inherited from class org.apache.hadoop.fs.FileSystem
DEFAULT_FS, FS_DEFAULT_NAME_KEY, LOG, SHUTDOWN_HOOK_PRIORITY, statistics, TRASH_PREFIX, USER_HOME_PREFIXFields inherited from interface org.apache.hadoop.security.token.DelegationTokenIssuer
TOKEN_LOG -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidChecks if the user can access a path.append(Path f, int bufferSize, Progressable progress) Append to an existing file (optional operation).appendFile(Path path) Create a Builder to append a file.protected URIcanonicalizeUri(URI uri) Canonicalize the given URI.protected voidCheck that a Path belongs to this FileSystem.voidclose()Close this FileSystem instance.voidcompleteLocalOutput(Path fsOutputFile, Path tmpLocalFile) Called when we're all done writing to the target.voidConcat existing files together.voidcopyFromLocalFile(boolean delSrc, boolean overwrite, Path[] srcs, Path dst) The src files are on the local disk.voidcopyFromLocalFile(boolean delSrc, boolean overwrite, Path src, Path dst) The src file is on the local disk.voidcopyFromLocalFile(boolean delSrc, Path src, Path dst) The src file is on the local disk.voidcopyToLocalFile(boolean delSrc, Path src, Path dst) The src file is under FS, and the dst is on the local disk.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.create(Path f, FsPermission permission, EnumSet<CreateFlag> flags, int bufferSize, short replication, long blockSize, Progressable progress, org.apache.hadoop.fs.Options.ChecksumOpt checksumOpt) Create an FSDataOutputStream at the indicated Path with a custom checksum option.createFile(Path path) Create a new FSDataOutputStreamBuilder for the file with path.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.protected PathHandlecreatePathHandle(FileStatus stat, org.apache.hadoop.fs.Options.HandleOpt... opts) Hook to implement support forPathHandleoperations.createSnapshot(Path path, String snapshotName) Create a snapshot.voidcreateSymlink(Path target, Path link, boolean createParent) booleanDelete a filevoiddeleteSnapshot(Path path, String snapshotName) Delete a snapshot of a directory.getAclStatus(Path path) Gets the ACL of a file or directory.Collection<? extends BlockStoragePolicySpi>Retrieve all the storage policies supported by this file system.protected URIReturn a canonicalized form of this FileSystem's URI.Get all the immediate child FileSystems embedded in this FileSystem.getConf()Return the configuration used by this object.longReturn the number of bytes that large input files should be optimally be split into to minimize I/O time.longReturn the number of bytes that large input files should be optimally be split into to minimize I/O time.shortGet the default replication.shortGet the default replication for a path.getEnclosingRoot(Path path) Return path of the enclosing root for a given path.getFileBlockLocations(FileStatus file, long start, long len) Return an array containing hostnames, offset and size of portions of the given file.Get the checksum of a file, if the FS supports checksums.getFileChecksum(Path f, long length) Get the checksum of a file, from the beginning of the file till the specific length.Get file status.Return the current user's home directory in this FileSystem.protected PathNote: with the new FileContext class, getWorkingDirectory() will be removed.Get the raw file systemReturn a set of server default configuration values.Return a set of server default configuration values.Returns a status object describing the use and capacity of the filesystem.getStoragePolicy(Path src) Query the effective storage policy ID for the given file or directory.getTrashRoot(Path path) Get the root directory of Trash for current user when the path specified is deleted.getTrashRoots(boolean allUsers) Get all the trash roots for current user or all users.getUri()Returns a URI whose scheme and authority identify this FileSystem.longgetUsed()Return the total size of all files in the filesystem.longReturn the total size of all files from a specified path.Get the current working directory for the given file systembyte[]Get an xattr name and value for a file or directory.Get all of the xattr name/value pairs for a file or directory.Get all of the xattrs name/value pairs for a file or directory.booleanhasPathCapability(Path path, String capability) The base FileSystem implementation generally has no knowledge of the capabilities of actual implementations.voidinitialize(URI name, Configuration conf) Called after a new FileSystem instance is constructed.org.apache.hadoop.fs.RemoteIterator<Path>listCorruptFileBlocks(Path path) List corrupted file blocks.org.apache.hadoop.fs.RemoteIterator<LocatedFileStatus>List files and its block locations in a directory.protected org.apache.hadoop.fs.RemoteIterator<LocatedFileStatus>listLocatedStatus(Path f, PathFilter filter) List a directory.listStatus(Path f) List files in a directory.org.apache.hadoop.fs.RemoteIterator<FileStatus>Return a remote iterator for listing in a directorylistXAttrs(Path path) Get all of the xattr names for a file or directory.makeQualified(Path path) Make sure that a path specifies a FileSystem.booleanCallFileSystem.mkdirs(Path, FsPermission)with default permission.booleanmkdirs(Path f, FsPermission permission) Make the given file and all non-existent parents into directories.voidmodifyAclEntries(Path path, List<AclEntry> aclSpec) Modifies ACL entries of files and directories.voidmsync()Synchronize client metadata state.open(PathHandle fd, int bufferSize) Open an FSDataInputStream matching the PathHandle instance.Opens an FSDataInputStream at the indicated Path.Open a file for reading through a builder API.openFile(PathHandle pathHandle) Open a file for reading through a builder API.protected CompletableFuture<FSDataInputStream>openFileWithOptions(PathHandle pathHandle, org.apache.hadoop.fs.impl.OpenFileParameters parameters) Execute the actual open file operation.protected CompletableFuture<FSDataInputStream>openFileWithOptions(Path path, org.apache.hadoop.fs.impl.OpenFileParameters parameters) Execute the actual open file operation.protected FSDataOutputStreamprimitiveCreate(Path f, FsPermission absolutePermission, EnumSet<CreateFlag> flag, int bufferSize, short replication, long blockSize, Progressable progress, org.apache.hadoop.fs.Options.ChecksumOpt checksumOpt) This create has been added to support the FileContext that processes the permission with umask before calling this method.protected booleanprimitiveMkdir(Path f, FsPermission abdolutePermission) This version of the mkdirs method assumes that the permission is absolute.voidRemoves all but the base ACL entries of files and directories.voidremoveAclEntries(Path path, List<AclEntry> aclSpec) Removes ACL entries from files and directories.voidremoveDefaultAcl(Path path) Removes all default ACL entries from files and directories.voidremoveXAttr(Path path, String name) Remove an xattr of a file or directory.booleanRenames Path src to Path dst.protected voidrename(Path src, Path dst, Options.Rename... options) Renames Path src to Path dst Fails if src is a file and dst is a directory. Fails if src is a directory and dst is a file. Fails if the parent of dst does not exist or is a file.voidrenameSnapshot(Path path, String snapshotOldName, String snapshotNewName) Rename a snapshot.protected PathresolveLink(Path f) resolvePath(Path p) Return the fully-qualified path of path, resolving the path through any symlinks or mount point.voidsatisfyStoragePolicy(Path src) Set the source path to satisfy storage policy.voidFully replaces ACL of files and directories, discarding all existing entries.voidSet owner of a path (i.e. a file or a directory).voidsetPermission(Path p, FsPermission permission) Set permission of a path.booleansetReplication(Path src, short replication) Set replication for an existing file.voidsetStoragePolicy(Path src, String policyName) Set the storage policy for a given file or directory.voidSet access time of a file.voidsetVerifyChecksum(boolean verifyChecksum) Set the verify checksum flag.voidsetWorkingDirectory(Path newDir) Set the current working directory for the given file system.voidsetWriteChecksum(boolean writeChecksum) Set the write checksum flag.voidSet an xattr of a file or directory.voidsetXAttr(Path path, String name, byte[] value, EnumSet<XAttrSetFlag> flag) Set an xattr of a file or directory.startLocalOutput(Path fsOutputFile, Path tmpLocalFile) Returns a local File that the user can write output to.booleanbooleanTruncate the file in the indicated path to the indicated size.voidunsetStoragePolicy(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, areSymlinksEnabled, cancelDeleteOnExit, clearStatistics, closeAll, closeAllForUGI, copyFromLocalFile, copyToLocalFile, copyToLocalFile, create, create, create, create, create, create, create, create, create, create, create, createBulkDelete, createDataInputStreamBuilder, createDataInputStreamBuilder, createDataOutputStreamBuilder, createMultipartUploader, createNewFile, createNonRecursive, createNonRecursive, createSnapshot, delete, deleteOnExit, enableSymlinks, exists, fixRelativePart, get, get, get, getAdditionalTokenIssuers, getAllStatistics, getBlockSize, getCanonicalServiceName, getContentSummary, getDefaultPort, getDefaultUri, getDelegationToken, getFileBlockLocations, getFileSystemClass, getFSofPath, getGlobalStorageStatistics, getLength, getLocal, getName, getNamed, getPathHandle, getQuotaUsage, getReplication, getScheme, getStatistics, getStatistics, getStatus, getStorageStatistics, globStatus, globStatus, isDirectory, isFile, listFiles, listStatus, listStatus, listStatus, listStatusBatch, mkdirs, moveFromLocalFile, moveFromLocalFile, moveToLocalFile, newInstance, newInstance, newInstance, newInstanceLocal, open, open, primitiveMkdir, printStatistics, processDeleteOnExit, setDefaultUri, setDefaultUri, setQuota, setQuotaByStorageTypeMethods inherited from class org.apache.hadoop.conf.Configured
setConfMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.hadoop.security.token.DelegationTokenIssuer
addDelegationTokens
-
Field Details
-
fs
-
swapScheme
-
-
Constructor Details
-
FilterFileSystem
public FilterFileSystem() -
FilterFileSystem
-
-
Method Details
-
getRawFileSystem
Get the raw file system- Returns:
- FileSystem being filtered
-
initialize
Called after a new FileSystem instance is constructed.- Overrides:
initializein classFileSystem- Parameters:
name- a uri whose authority section names the host, port, etc. for this FileSystemconf- the configuration- Throws:
IOException- on any failure to initialize this instance.
-
getUri
Returns a URI whose scheme and authority identify this FileSystem.- Specified by:
getUriin classFileSystem- Returns:
- the URI of this filesystem.
-
getCanonicalUri
Description copied from class:FileSystemReturn a canonicalized form of this FileSystem's URI. The default implementation simply callsFileSystem.canonicalizeUri(URI)on the filesystem's own URI, so subclasses typically only need to implement that method.- Overrides:
getCanonicalUriin classFileSystem- Returns:
- the URI of this filesystem.
- See Also:
-
canonicalizeUri
Description copied from class:FileSystemCanonicalize the given URI. This is implementation-dependent, and may for example consist of canonicalizing the hostname using DNS and adding the default port if not specified. The default implementation simply fills in the default port if not specified and ifFileSystem.getDefaultPort()returns a default port.- Overrides:
canonicalizeUriin classFileSystem- Parameters:
uri- url.- Returns:
- URI
- See Also:
-
NetUtils.getCanonicalUri(URI, int)
-
makeQualified
Make sure that a path specifies a FileSystem.- Overrides:
makeQualifiedin classFileSystem- Parameters:
path- to qualify.- Returns:
- this path if it contains a scheme and authority and is absolute, or a new path that includes a path and authority and is fully qualified
- See Also:
-
Path.makeQualified(URI, Path)
-
checkPath
Check that a Path belongs to this FileSystem.- Overrides:
checkPathin classFileSystem- Parameters:
path- to check
-
getFileBlockLocations
public BlockLocation[] getFileBlockLocations(FileStatus file, long start, long len) throws IOException Description copied from class:FileSystemReturn an array containing hostnames, offset and size of portions of the given file. For nonexistent file or regions,nullis 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:
getFileBlockLocationsin classFileSystem- Parameters:
file- FilesStatus to get data fromstart- offset into the given filelen- length for which to get locations for- Returns:
- block location array.
- Throws:
IOException- IO failure
-
resolvePath
Description copied from class:FileSystemReturn the fully-qualified path of path, resolving the path through any symlinks or mount point.- Overrides:
resolvePathin classFileSystem- Parameters:
p- path to be resolved- Returns:
- fully qualified path
- Throws:
FileNotFoundException- if the path is not presentIOException- for any other error
-
open
Opens an FSDataInputStream at the indicated Path.- Specified by:
openin classFileSystem- Parameters:
f- the file name to openbufferSize- the size of the buffer to be used.- Returns:
- input stream.
- Throws:
IOException- IO failure
-
open
Description copied from class:FileSystemOpen an FSDataInputStream matching the PathHandle instance. The implementation may encode metadata in PathHandle to address the resource directly and verify that the resource referenced satisfies constraints specified at its construciton.- Overrides:
openin classFileSystem- Parameters:
fd- PathHandle object returned by the FS authority.bufferSize- the size of the buffer to use- Returns:
- input stream.
- Throws:
InvalidPathHandleException- IfPathHandleconstraints are not satisfiedIOException- IO failure
-
createPathHandle
protected PathHandle createPathHandle(FileStatus stat, org.apache.hadoop.fs.Options.HandleOpt... opts) Description copied from class:FileSystemHook to implement support forPathHandleoperations.- Overrides:
createPathHandlein classFileSystem- Parameters:
stat- Referent in the target FileSystemopts- Constraints that determine the validity of thePathHandlereference.- Returns:
- path handle.
-
append
Description copied from class:FileSystemAppend to an existing file (optional operation).- Specified by:
appendin classFileSystem- 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
-
concat
Description copied from class:FileSystemConcat existing files together.- Overrides:
concatin classFileSystem- Parameters:
f- the path to the target destination.psrcs- the paths to the sources to use for the concatenation.- Throws:
IOException- IO failure
-
create
public FSDataOutputStream create(Path f, FsPermission permission, boolean overwrite, int bufferSize, short replication, long blockSize, Progressable progress) throws IOException Description copied from class:FileSystemCreate an FSDataOutputStream at the indicated Path with write-progress reporting.- Specified by:
createin classFileSystem- Parameters:
f- the file name to openpermission- file permissionoverwrite- 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 sizeprogress- the progress reporter- Returns:
- output stream.
- Throws:
IOException- IO failure- See Also:
-
create
public FSDataOutputStream create(Path f, FsPermission permission, EnumSet<CreateFlag> flags, int bufferSize, short replication, long blockSize, Progressable progress, org.apache.hadoop.fs.Options.ChecksumOpt checksumOpt) throws IOException Description copied from class:FileSystemCreate an FSDataOutputStream at the indicated Path with a custom checksum option.- Overrides:
createin classFileSystem- Parameters:
f- the file name to openpermission- file permissionflags-CreateFlags to use for this stream.bufferSize- the size of the buffer to be used.replication- required block replication for the file.blockSize- block sizeprogress- the progress reporterchecksumOpt- checksum parameter. If null, the values found in conf will be used.- Returns:
- output stream.
- Throws:
IOException- IO failure- See Also:
-
listLocatedStatus
protected org.apache.hadoop.fs.RemoteIterator<LocatedFileStatus> listLocatedStatus(Path f, PathFilter filter) throws FileNotFoundException, IOException Description copied from class:FileSystemList a directory. The returned results include its block location if it is a file The results are filtered by the given path filter- Overrides:
listLocatedStatusin classFileSystem- Parameters:
f- a pathfilter- a path filter- Returns:
- an iterator that traverses statuses of the files/directories in the given path
- Throws:
FileNotFoundException- iffdoes not existIOException- if any I/O error occurred
-
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:FileSystemOpens an FSDataOutputStream at the indicated Path with write-progress reporting. Same as create(), except fails if parent directory doesn't already exist.- Overrides:
createNonRecursivein classFileSystem- Parameters:
f- the file name to openpermission- file permissionflags-CreateFlags to use for this stream.bufferSize- the size of the buffer to be used.replication- required block replication for the file.blockSize- block sizeprogress- the progress reporter- Returns:
- output stream.
- Throws:
IOException- IO failure- See Also:
-
setReplication
Set replication for an existing file.- Overrides:
setReplicationin classFileSystem- Parameters:
src- file namereplication- new replication- Returns:
- true if successful; false if file does not exist or is a directory
- Throws:
IOException- raised on errors performing I/O.
-
rename
Renames Path src to Path dst. Can take place on local fs or remote DFS.- Specified by:
renamein classFileSystem- Parameters:
src- path to be renameddst- new path after rename- Returns:
- true if rename is successful
- Throws:
IOException- on failure
-
rename
Description copied from class:FileSystemRenames Path src to Path dst- Fails if src is a file and dst is a directory.
- Fails if src is a directory and dst is a file.
- Fails if the parent of dst does not exist or is a file.
If OVERWRITE option is not passed as an argument, rename fails if the dst already exists.
If OVERWRITE option is passed as an argument, rename overwrites the dst if it is a file or an empty directory. Rename fails if dst is a non-empty directory.
Note that atomicity of rename is dependent on the file system implementation. Please refer to the file system documentation for details. This default implementation is non atomic.This method is deprecated since it is a temporary method added to support the transition from FileSystem to FileContext for user applications.
- Overrides:
renamein classFileSystem- Parameters:
src- path to be renameddst- new path after renameoptions- rename options.- Throws:
FileNotFoundException- src path does not exist, or the parent path of dst does not exist.FileAlreadyExistsException- dest path exists and is a fileParentNotDirectoryException- if the parent path of dest is not a directoryIOException- on failure
-
truncate
Description copied from class:FileSystemTruncate 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:
truncatein classFileSystem- Parameters:
f- The path to the file to be truncatednewLength- The size the file is to be truncated to- Returns:
trueif the file has been truncated to the desirednewLengthand is immediately available to be reused for write operations such asappend, orfalseif 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
-
delete
Delete a file- Specified by:
deletein classFileSystem- 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
-
listStatus
List files in a directory.- Specified by:
listStatusin classFileSystem- Parameters:
f- given path- Returns:
- the statuses of the files/directories in the given patch
- Throws:
FileNotFoundException- when the path does not existIOException- see specific implementation
-
listCorruptFileBlocks
public org.apache.hadoop.fs.RemoteIterator<Path> listCorruptFileBlocks(Path path) throws IOException Description copied from class:FileSystemList corrupted file blocks.- Overrides:
listCorruptFileBlocksin classFileSystem- Parameters:
path- the path.- Returns:
- an iterator over the corrupt files under the given path (may contain duplicates if a file has more than one corrupt block)
- Throws:
IOException- IO failure
-
listLocatedStatus
public org.apache.hadoop.fs.RemoteIterator<LocatedFileStatus> listLocatedStatus(Path f) throws IOException List files and its block locations in a directory.- Overrides:
listLocatedStatusin classFileSystem- Parameters:
f- is the path- Returns:
- an iterator that traverses statuses of the files/directories in the given path
- Throws:
FileNotFoundException- Iffdoes not existIOException- If an I/O error occurred
-
listStatusIterator
public org.apache.hadoop.fs.RemoteIterator<FileStatus> listStatusIterator(Path f) throws IOException Return a remote iterator for listing in a directory- Overrides:
listStatusIteratorin classFileSystem- Parameters:
f- target path- Returns:
- remote iterator
- Throws:
FileNotFoundException- ifpdoes not existIOException- if any I/O error occurred
-
getHomeDirectory
Description copied from class:FileSystemReturn the current user's home directory in this FileSystem. The default implementation returns"/user/$USER/".- Overrides:
getHomeDirectoryin classFileSystem- Returns:
- the path.
-
setWorkingDirectory
Set the current working directory for the given file system. All relative paths will be resolved relative to it.- Specified by:
setWorkingDirectoryin classFileSystem- Parameters:
newDir- new dir.
-
getWorkingDirectory
Get the current working directory for the given file system- Specified by:
getWorkingDirectoryin classFileSystem- Returns:
- the directory pathname
-
getInitialWorkingDirectory
Description copied from class:FileSystemNote: with the new FileContext class, getWorkingDirectory() will be removed. The working directory is implemented in FileContext. Some FileSystems like LocalFileSystem have an initial workingDir that we use as the starting workingDir. For other file systems like HDFS there is no built in notion of an initial workingDir.- Overrides:
getInitialWorkingDirectoryin classFileSystem- Returns:
- if there is built in notion of workingDir then it is returned; else a null is returned.
-
getStatus
Description copied from class:FileSystemReturns 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:
getStatusin classFileSystem- Parameters:
p- Path for which status should be obtained. null means the default partition.- Returns:
- a FsStatus object
- Throws:
IOException- see specific implementation
-
mkdirs
Description copied from class:FileSystemMake 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:
mkdirsin classFileSystem- Parameters:
f- path to createpermission- to apply to f- Returns:
- if mkdir success true, not false.
- Throws:
IOException- IO failure
-
mkdirs
Description copied from class:FileSystemCallFileSystem.mkdirs(Path, FsPermission)with default permission.- Overrides:
mkdirsin classFileSystem- Parameters:
f- path- Returns:
- true if the directory was created
- Throws:
IOException- IO failure
-
copyFromLocalFile
The src file is on the local disk. Add it to FS at the given dst name. delSrc indicates if the source should be removed- Overrides:
copyFromLocalFilein classFileSystem- Parameters:
delSrc- whether to delete the srcsrc- pathdst- path- Throws:
IOException- IO failure.
-
copyFromLocalFile
public void copyFromLocalFile(boolean delSrc, boolean overwrite, Path[] srcs, Path dst) throws IOException The src files are on the local disk. Add it to FS at the given dst name. delSrc indicates if the source should be removed- Overrides:
copyFromLocalFilein classFileSystem- Parameters:
delSrc- whether to delete the srcoverwrite- whether to overwrite an existing filesrcs- array of paths which are sourcedst- path- Throws:
IOException- IO failure
-
copyFromLocalFile
public void copyFromLocalFile(boolean delSrc, boolean overwrite, Path src, Path dst) throws IOException The src file is on the local disk. Add it to FS at the given dst name. delSrc indicates if the source should be removed- Overrides:
copyFromLocalFilein classFileSystem- Parameters:
delSrc- whether to delete the srcoverwrite- whether to overwrite an existing filesrc- pathdst- path- Throws:
IOException- IO failure
-
copyToLocalFile
The src file is under FS, and the dst is on the local disk. Copy it from FS control to the local dst name. delSrc indicates if the src will be removed or not.- Overrides:
copyToLocalFilein classFileSystem- Parameters:
delSrc- whether to delete the srcsrc- path src file in the remote filesystemdst- path local destination- Throws:
IOException- IO failure
-
startLocalOutput
Returns a local File that the user can write output to. The caller provides both the eventual FS target name and the local working file. If the FS is local, we write directly into the target. If the FS is remote, we write into the tmp local area.- Overrides:
startLocalOutputin classFileSystem- Parameters:
fsOutputFile- path of output filetmpLocalFile- path of local tmp file- Returns:
- the path.
- Throws:
IOException- IO failure
-
completeLocalOutput
Called when we're all done writing to the target. A local FS will do nothing, because we've written to exactly the right place. A remote FS will copy the contents of tmpLocalFile to the correct target at fsOutputFile.- Overrides:
completeLocalOutputin classFileSystem- Parameters:
fsOutputFile- path of output filetmpLocalFile- path to local tmp file- Throws:
IOException- IO failure
-
getUsed
Return the total size of all files in the filesystem.- Overrides:
getUsedin classFileSystem- Returns:
- the number of path used.
- Throws:
IOException- IO failure
-
getUsed
Return the total size of all files from a specified path.- Overrides:
getUsedin classFileSystem- Parameters:
path- the path.- Returns:
- the number of path content summary.
- Throws:
IOException- IO failure
-
getDefaultBlockSize
public long getDefaultBlockSize()Description copied from class:FileSystemReturn the number of bytes that large input files should be optimally be split into to minimize I/O time.- Overrides:
getDefaultBlockSizein classFileSystem- Returns:
- default block size.
-
getDefaultReplication
public short getDefaultReplication()Description copied from class:FileSystemGet the default replication.- Overrides:
getDefaultReplicationin classFileSystem- Returns:
- the replication; the default value is "1".
-
getServerDefaults
Description copied from class:FileSystemReturn a set of server default configuration values.- Overrides:
getServerDefaultsin classFileSystem- Returns:
- server default configuration values
- Throws:
IOException- IO failure
-
getDefaultBlockSize
Description copied from class:FileSystemReturn 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:
getDefaultBlockSizein classFileSystem- Parameters:
f- path of file- Returns:
- the default block size for the path's filesystem
-
getDefaultReplication
Description copied from class:FileSystemGet 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:
getDefaultReplicationin classFileSystem- Parameters:
f- of the file- Returns:
- default replication for the path's filesystem
-
getServerDefaults
Description copied from class:FileSystemReturn a set of server default configuration values.- Overrides:
getServerDefaultsin classFileSystem- 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
-
getFileStatus
Get file status.- Specified by:
getFileStatusin classFileSystem- Parameters:
f- The path we want information from- Returns:
- a FileStatus object
- Throws:
FileNotFoundException- when the path does not existIOException- see specific implementation
-
msync
Description copied from class:FileSystemSynchronize client metadata state.In some FileSystem implementations such as HDFS metadata synchronization is essential to guarantee consistency of read requests particularly in HA setting.
- Overrides:
msyncin classFileSystem- Throws:
IOException- If an I/O error occurred.UnsupportedOperationException- if the operation is unsupported.
-
access
public void access(Path path, FsAction mode) throws AccessControlException, FileNotFoundException, IOException Description copied from class:FileSystemChecks 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 anAccessControlException.The default implementation calls
FileSystem.getFileStatus(Path)and checks the returned permissions against the requested permissions. Note that theFileSystem.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 checkmode- type of access to check- Throws:
AccessControlException- if access is deniedFileNotFoundException- if the path does not existIOException- see specific implementation
-
createSymlink
public void createSymlink(Path target, Path link, boolean createParent) throws AccessControlException, FileAlreadyExistsException, FileNotFoundException, ParentNotDirectoryException, UnsupportedFileSystemException, IOException Description copied from class:FileSystem- Overrides:
createSymlinkin classFileSystem- Parameters:
target- target path.link- link.createParent- create parent.- Throws:
AccessControlException- if access is denied.FileAlreadyExistsException- when the path does not exist.FileNotFoundException- when the path does not exist.ParentNotDirectoryException- if the parent path of dest is not a directory.UnsupportedFileSystemException- if there was no known implementation for the scheme.IOException- raised on errors performing I/O.
-
getFileLinkStatus
public FileStatus getFileLinkStatus(Path f) throws AccessControlException, FileNotFoundException, UnsupportedFileSystemException, IOException Description copied from class:FileSystem- Overrides:
getFileLinkStatusin classFileSystem- Parameters:
f- the path.- Returns:
- file status
- Throws:
AccessControlException- if access is denied.FileNotFoundException- when the path does not exist.UnsupportedFileSystemException- if there was no known implementation for the scheme.IOException- raised on errors performing I/O.
-
supportsSymlinks
public boolean supportsSymlinks()Description copied from class:FileSystem- Overrides:
supportsSymlinksin classFileSystem- Returns:
- if support symlinkls true, not false.
-
getLinkTarget
Description copied from class:FileSystem- Overrides:
getLinkTargetin classFileSystem- Parameters:
f- the path.- Returns:
- the path.
- Throws:
IOException- IO failure.
-
resolveLink
Description copied from class:FileSystem- Overrides:
resolveLinkin classFileSystem- Parameters:
f- the path.- Returns:
- the path.
- Throws:
IOException- IO failure.
-
getFileChecksum
Description copied from class:FileSystemGet the checksum of a file, if the FS supports checksums.- Overrides:
getFileChecksumin classFileSystem- 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
-
getFileChecksum
Description copied from class:FileSystemGet the checksum of a file, from the beginning of the file till the specific length.- Overrides:
getFileChecksumin classFileSystem- Parameters:
f- The file pathlength- The length of the file range for checksum calculation- Returns:
- The file checksum or null if checksums are not supported.
- Throws:
IOException- IO failure
-
setVerifyChecksum
public void setVerifyChecksum(boolean verifyChecksum) Description copied from class:FileSystemSet the verify checksum flag. This is only applicable if the corresponding filesystem supports checksums. By default doesn't do anything.- Overrides:
setVerifyChecksumin classFileSystem- Parameters:
verifyChecksum- Verify checksum flag
-
setWriteChecksum
public void setWriteChecksum(boolean writeChecksum) Description copied from class:FileSystemSet the write checksum flag. This is only applicable if the corresponding filesystem supports checksums. By default doesn't do anything.- Overrides:
setWriteChecksumin classFileSystem- Parameters:
writeChecksum- Write checksum flag
-
getConf
Description copied from interface:ConfigurableReturn the configuration used by this object.- Specified by:
getConfin interfaceConfigurable- Overrides:
getConfin classConfigured- Returns:
- Configuration
-
close
Description copied from class:FileSystemClose this FileSystem instance. Will release any held locks, delete all files queued for deletion through calls toFileSystem.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:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classFileSystem- Throws:
IOException- IO failure
-
setOwner
Description copied from class:FileSystemSet owner of a path (i.e. a file or a directory). The parameters username and groupname cannot both be null.- Overrides:
setOwnerin classFileSystem- Parameters:
p- The pathusername- If it is null, the original username remains unchanged.groupname- If it is null, the original groupname remains unchanged.- Throws:
IOException- IO failure
-
setTimes
Description copied from class:FileSystemSet access time of a file.- Overrides:
setTimesin classFileSystem- Parameters:
p- The pathmtime- 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
-
setPermission
Description copied from class:FileSystemSet permission of a path.- Overrides:
setPermissionin classFileSystem- Parameters:
p- The pathpermission- permission- Throws:
IOException- IO failure
-
primitiveCreate
protected FSDataOutputStream primitiveCreate(Path f, FsPermission absolutePermission, EnumSet<CreateFlag> flag, int bufferSize, short replication, long blockSize, Progressable progress, org.apache.hadoop.fs.Options.ChecksumOpt checksumOpt) throws IOException Description copied from class:FileSystemThis create has been added to support the FileContext that processes the permission with umask before calling this method. This a temporary method added to support the transition from FileSystem to FileContext for user applications.- Overrides:
primitiveCreatein classFileSystem- Parameters:
f- path.absolutePermission- permission.flag- create flag.bufferSize- buffer size.replication- replication.blockSize- block size.progress- progress.checksumOpt- check sum opt.- Returns:
- output stream.
- Throws:
IOException- IO failure
-
primitiveMkdir
Description copied from class:FileSystemThis version of the mkdirs method assumes that the permission is absolute. It has been added to support the FileContext that processes the permission with umask before calling this method. This a temporary method added to support the transition from FileSystem to FileContext for user applications.- Overrides:
primitiveMkdirin classFileSystem- Parameters:
f- pathabdolutePermission- permissions- Returns:
- true if the directory was actually created.
- Throws:
IOException- IO failure- See Also:
-
getChildFileSystems
Description copied from class:FileSystemGet 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"
-
createSnapshot
Description copied from class:FileSystemCreate a snapshot.- Overrides:
createSnapshotin classFileSystem- 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:FileSystemRename a snapshot.- Overrides:
renameSnapshotin classFileSystem- Parameters:
path- The directory path where the snapshot was takensnapshotOldName- Old name of the snapshotsnapshotNewName- New name of the snapshot- Throws:
IOException- IO failure
-
deleteSnapshot
Description copied from class:FileSystemDelete a snapshot of a directory.- Overrides:
deleteSnapshotin classFileSystem- Parameters:
path- The directory that the to-be-deleted snapshot belongs tosnapshotName- The name of the snapshot- Throws:
IOException- IO failure
-
modifyAclEntries
Description copied from class:FileSystemModifies 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:
modifyAclEntriesin classFileSystem- Parameters:
path- Path to modifyaclSpec- List<AclEntry> describing modifications- Throws:
IOException- if an ACL could not be modified
-
removeAclEntries
Description copied from class:FileSystemRemoves ACL entries from files and directories. Other ACL entries are retained.- Overrides:
removeAclEntriesin classFileSystem- Parameters:
path- Path to modifyaclSpec- List describing entries to remove- Throws:
IOException- if an ACL could not be modified
-
removeDefaultAcl
Description copied from class:FileSystemRemoves all default ACL entries from files and directories.- Overrides:
removeDefaultAclin classFileSystem- Parameters:
path- Path to modify- Throws:
IOException- if an ACL could not be modified
-
removeAcl
Description copied from class:FileSystemRemoves 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:
removeAclin classFileSystem- Parameters:
path- Path to modify- Throws:
IOException- if an ACL could not be removed
-
setAcl
Description copied from class:FileSystemFully replaces ACL of files and directories, discarding all existing entries.- Overrides:
setAclin classFileSystem- Parameters:
path- Path to modifyaclSpec- 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
Description copied from class:FileSystemGets the ACL of a file or directory.- Overrides:
getAclStatusin classFileSystem- 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
Description copied from class:FileSystemSet 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:
setXAttrin classFileSystem- Parameters:
path- Path to modifyname- xattr name.value- xattr value.- Throws:
IOException- IO failure
-
setXAttr
public void setXAttr(Path path, String name, byte[] value, EnumSet<XAttrSetFlag> flag) throws IOException Description copied from class:FileSystemSet 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:
setXAttrin classFileSystem- Parameters:
path- Path to modifyname- xattr name.value- xattr value.flag- xattr set flag- Throws:
IOException- IO failure
-
getXAttr
Description copied from class:FileSystemGet 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:
getXAttrin classFileSystem- Parameters:
path- Path to get extended attributename- xattr name.- Returns:
- byte[] xattr value.
- Throws:
IOException- IO failure
-
getXAttrs
Description copied from class:FileSystemGet 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:
getXAttrsin classFileSystem- Parameters:
path- Path to get extended attributes- Returns:
- Map describing the XAttrs of the file or directory
- Throws:
IOException- IO failure
-
getXAttrs
Description copied from class:FileSystemGet 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:
getXAttrsin classFileSystem- Parameters:
path- Path to get extended attributesnames- XAttr names.- Returns:
- Map describing the XAttrs of the file or directory
- Throws:
IOException- IO failure
-
listXAttrs
Description copied from class:FileSystemGet 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:
listXAttrsin classFileSystem- Parameters:
path- Path to get extended attributes- Returns:
- List<String> of the XAttr names of the file or directory
- Throws:
IOException- IO failure
-
removeXAttr
Description copied from class:FileSystemRemove 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:
removeXAttrin classFileSystem- Parameters:
path- Path to remove extended attributename- xattr name- Throws:
IOException- IO failure
-
satisfyStoragePolicy
Description copied from class:FileSystemSet the source path to satisfy storage policy.- Overrides:
satisfyStoragePolicyin classFileSystem- Parameters:
src- The source path referring to either a directory or a file.- Throws:
IOException- If an I/O error occurred.
-
setStoragePolicy
Description copied from class:FileSystemSet the storage policy for a given file or directory.- Overrides:
setStoragePolicyin classFileSystem- Parameters:
src- file or directory path.policyName- the name of the target storage policy. The list of supported Storage policies can be retrieved viaFileSystem.getAllStoragePolicies().- Throws:
IOException- IO failure
-
unsetStoragePolicy
Description copied from class:FileSystemUnset the storage policy set for a given file or directory.- Overrides:
unsetStoragePolicyin classFileSystem- Parameters:
src- file or directory path.- Throws:
IOException- IO failure
-
getStoragePolicy
Description copied from class:FileSystemQuery the effective storage policy ID for the given file or directory.- Overrides:
getStoragePolicyin classFileSystem- Parameters:
src- file or directory path.- Returns:
- storage policy for give file.
- Throws:
IOException- IO failure
-
getAllStoragePolicies
Description copied from class:FileSystemRetrieve all the storage policies supported by this file system.- Overrides:
getAllStoragePoliciesin classFileSystem- Returns:
- all storage policies supported by this filesystem.
- Throws:
IOException- IO failure
-
getTrashRoot
Description copied from class:FileSystemGet the root directory of Trash for current user when the path specified is deleted.- Overrides:
getTrashRootin classFileSystem- Parameters:
path- the trash root of the path to be determined.- Returns:
- the default implementation returns
/user/$USER/.Trash
-
getTrashRoots
Description copied from class:FileSystemGet all the trash roots for current user or all users.- Overrides:
getTrashRootsin classFileSystem- Parameters:
allUsers- return trash roots for all users if true.- Returns:
- all the trash root directories.
Default FileSystem returns .Trash under users' home directories if
/user/$USER/.Trashexists.
-
createFile
Description copied from class:FileSystemCreate a new FSDataOutputStreamBuilder for the file with path. Files are overwritten by default.- Overrides:
createFilein classFileSystem- Parameters:
path- file path- Returns:
- a FSDataOutputStreamBuilder object to build the file HADOOP-14384. Temporarily reduce the visibility of method before the builder interface becomes stable.
-
appendFile
Description copied from class:FileSystemCreate a Builder to append a file.- Overrides:
appendFilein classFileSystem- Parameters:
path- file path.- Returns:
- a
FSDataOutputStreamBuilderto build file append request.
-
openFile
public FutureDataInputStreamBuilder openFile(Path path) throws IOException, UnsupportedOperationException Description copied from class:FileSystemOpen a file for reading through a builder API. Ultimately callsFileSystem.open(Path, int)unless a subclass executes the open command differently. The semantics of this call are therefore the same as that ofFileSystem.open(Path, int)with one special point: it is inFSDataInputStreamBuilder.build()in which the open operation takes place -it is there where all preconditions to the operation are checked.- Overrides:
openFilein classFileSystem- Parameters:
path- file path- Returns:
- a FSDataInputStreamBuilder object to build the input stream
- Throws:
IOException- if some early checks cause IO failures.UnsupportedOperationException- if support is checked early.
-
openFile
public FutureDataInputStreamBuilder openFile(PathHandle pathHandle) throws IOException, UnsupportedOperationException Description copied from class:FileSystemOpen a file for reading through a builder API. Ultimately callsFileSystem.open(PathHandle, int)unless a subclass executes the open command differently. If PathHandles are unsupported, this may fail in theFSDataInputStreamBuilder.build()command, rather than in thisopenFile()operation.- Overrides:
openFilein classFileSystem- Parameters:
pathHandle- path handle.- Returns:
- a FSDataInputStreamBuilder object to build the input stream
- Throws:
IOException- if some early checks cause IO failures.UnsupportedOperationException- if support is checked early.
-
openFileWithOptions
protected CompletableFuture<FSDataInputStream> openFileWithOptions(Path path, org.apache.hadoop.fs.impl.OpenFileParameters parameters) throws IOException Description copied from class:FileSystemExecute the actual open file operation. This is invoked fromFSDataInputStreamBuilder.build()and fromDelegateToFileSystemand is where the action of opening the file should begin. The base implementation performs a blocking call toFileSystem.open(Path, int)in this call; the actual outcome is in the returnedCompletableFuture. This avoids having to create some thread pool, while still setting up the expectation that theget()call is needed to evaluate the result.- Overrides:
openFileWithOptionsin classFileSystem- Parameters:
path- path to the fileparameters- open file parameters from the builder.- Returns:
- a future which will evaluate to the opened file.
- Throws:
IOException- failure to resolve the link.
-
openFileWithOptions
protected CompletableFuture<FSDataInputStream> openFileWithOptions(PathHandle pathHandle, org.apache.hadoop.fs.impl.OpenFileParameters parameters) throws IOException Description copied from class:FileSystemExecute the actual open file operation. The base implementation performs a blocking call toFileSystem.open(Path, int)in this call; the actual outcome is in the returnedCompletableFuture. This avoids having to create some thread pool, while still setting up the expectation that theget()call is needed to evaluate the result.- Overrides:
openFileWithOptionsin classFileSystem- Parameters:
pathHandle- path to the fileparameters- open file parameters from the builder.- Returns:
- a future which will evaluate to the opened file.
- Throws:
IOException- failure to resolve the link.
-
getEnclosingRoot
Description copied from class:FileSystemReturn 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:
getEnclosingRootin classFileSystem- 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
-
hasPathCapability
Description copied from class:FileSystemThe base FileSystem implementation generally has no knowledge of the capabilities of actual implementations. Unless it has a way to explicitly determine the capabilities, this method returns false. Probe for a specific capability under the given path. If the function returnstrue, this instance is explicitly declaring that the capability is available. If the function returnsfalse, it can mean one of:- The capability is not known.
- The capability is known but it is not supported.
- The capability is known but the filesystem does not know if it is supported under the supplied path.
Implementors:
PathCapabilitiesSupportcan be used to help implement this method.- Specified by:
hasPathCapabilityin interfaceorg.apache.hadoop.fs.PathCapabilities- Overrides:
hasPathCapabilityin classFileSystem- Parameters:
path- path to query the capability of.capability- non-null, non-empty string to query the path for support.- Returns:
- true if the capability is supported under that part of the FS.
- Throws:
IOException- this should not be raised, except on problems resolving paths or relaying the call.
-