-
- All Known Implementing Classes:
AzureFileSystem
,GcpFileSystem
public interface FileSystem
Describes the file system identified by a path scheme. APath
points to a location (existing or not) on aFileSystem
.A
FileSystem
is rarely used directly. One only needs to be creating a new path scheme, in which case aFileSystemProvider
must also be implemented.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description InputStream
concat(List<Path> paths, boolean ignoreNonExistent)
Returns an input stream consisting of the given list of paths concatenated together.Path
createDirectories(Path path)
Creates the directory identified by the given path, creating any necessary parent directories.Path
createDirectory(Path path)
Creates the directory identified by the given path.boolean
createNewFile(Path path)
Creates the file identified by the given path, if it doesn't already exist.void
delete(Path path, boolean recursively)
Deletes the file or directory identified by the specified path.boolean
exists(Path path)
Indicates whether the specified path represents an existing file or directory.PathDetails
getDetails(Path path)
Returns metadata associated with the specified path.String
getFileSystemType(Path path)
Returns an identifier for the filesystem type.Object
getImplementation()
long
getLength(Path path)
Returns the length of the file represented by the given path.FileSystemProvider
getProvider()
Gets the provider for the path scheme associated with the file system.SplitIterator
getSplits(Path path, SplitOptions options)
Computes data splits over the specified file.boolean
isCreatable(Path path)
Indicates whether the specified path can be created.boolean
isDirectory(Path path)
Indicates whether the specified path represents a directory.boolean
isFile(Path path)
Indicates whether the specified path represents a file.boolean
isHidden(Path path)
Indicates whether the associated path is hidden by the file system.boolean
isReadable(Path path)
Indicates whether the specified path can be read.boolean
isWritable(Path path)
Indicates whether the specified path can be written.List<PathDetails>
listDirectory(Path path, DirectoryFilter filter)
Gets the contents of the specified directory, applying a filter.List<PathDetails>
matchPaths(String pattern)
Gets all paths which match the given pattern.boolean
move(FileSystem fromFS, Path from, Path to)
Moves a file or directory from one location to another if possible.FileChannel
newFileChannel(Path path)
Opens the specified file for random access.InputStream
newInputStream(Path path)
Opens the specified file for reading.OutputStream
newOutputStream(Path path, WriteMode mode)
Opens the specified file for writing.boolean
supportsConcat()
Returns whether this filesystem supports theconcat
method.boolean
supportsDirectories()
Indicates whether the file system supports directories.boolean
supportsRandomAccess()
Indicates whether the file system supports random access to files.
-
-
-
Method Detail
-
getFileSystemType
String getFileSystemType(Path path)
Returns an identifier for the filesystem type. This identifier is used for reporting statistics to be able to distinguish local from non-local io.- Parameters:
path
- the path- Returns:
- a unique identifier
-
getProvider
FileSystemProvider getProvider()
Gets the provider for the path scheme associated with the file system.- Returns:
- the associated provider object
-
supportsRandomAccess
boolean supportsRandomAccess()
Indicates whether the file system supports random access to files.If a file system does not support random access, calling
FileClient.newFileChannel(Path)
will raise an error for paths referring to the file system.- Returns:
true
if random access is supported,false
otherwise.
-
supportsDirectories
boolean supportsDirectories()
Indicates whether the file system supports directories.- Returns:
true
if directories are supported,false
otherwise.
-
matchPaths
List<PathDetails> matchPaths(String pattern) throws IOException
Gets all paths which match the given pattern. Patterns may be scheme-specific; refer to the provider implementation of a specific scheme to determine valid pattern syntax.- Parameters:
pattern
- the file pattern to use- Returns:
- all paths matching the pattern
- Throws:
IOException
- if I/O errors occurIllegalArgumentException
- if the pattern is not prefixed with a scheme supported by the provider
-
createDirectories
Path createDirectories(Path path) throws IOException
Creates the directory identified by the given path, creating any necessary parent directories.- Parameters:
path
- the directory to create- Returns:
- the path to the directory
- Throws:
IOException
- if I/O errors occurIllegalArgumentException
- if the path is not is not for a scheme supported by the provider
-
createDirectory
Path createDirectory(Path path) throws IOException
Creates the directory identified by the given path. All parent directories must already exist. UsecreateDirectories(Path)
if nonexistent parents need to be created.- Parameters:
path
- the directory to create- Returns:
- the path to the directory
- Throws:
IOException
- if I/O errors occur or if the parent directory does not existIllegalArgumentException
- if the path is not is not for a scheme supported by the provider
-
createNewFile
boolean createNewFile(Path path) throws IOException
Creates the file identified by the given path, if it doesn't already exist. All parent directories must already exist. UsecreateDirectories(Path)
if nonexistent parents need to be created.- Parameters:
path
- the directory to create- Returns:
true
if the file was created,false
if it already existed.- Throws:
IOException
- if I/O errors occur or if the parent directory does not existIllegalArgumentException
- if the path is not is not for a scheme supported by the provider
-
delete
void delete(Path path, boolean recursively) throws IOException
Deletes the file or directory identified by the specified path. If the path is a directory, the contents will be deleted recursively as indicated. It is not an error to delete a non-existent path.- Parameters:
path
- the file or directory to deleterecursively
- indicates whether deletes of directories should recursively delete the contents- Throws:
IOException
- if I/O errors occur or if the path identifies a non-empty directory and a recursive delete was not requestedIllegalArgumentException
- if the path is not is not for a scheme supported by the provider
-
move
boolean move(FileSystem fromFS, Path from, Path to) throws IOException
Moves a file or directory from one location to another if possible.- Parameters:
fromFS
- the source filesystemfrom
- the source locationto
- the target location- Returns:
- true if a move was possible (otherwise caller should fall back to copy-and-delete)
- Throws:
IOException
- if I/O errors occur
-
newInputStream
InputStream newInputStream(Path path) throws IOException
Opens the specified file for reading. If the path identifies a directory, all files in the directory are read as a concatenated stream, in the order they are returned by#listFiles(Path)
. The read starts at the first byte of the (first) file. The returned stream is generally not buffered; consult specific implementations for details.- Parameters:
path
- the file or directory to read- Returns:
- a stream for reading the contents of the path
- Throws:
IOException
- if I/O errors occurFileNotFoundException
- if the specified path does not existIllegalArgumentException
- if the path is not is not for a scheme supported by the provider
-
newOutputStream
OutputStream newOutputStream(Path path, WriteMode mode) throws IOException
Opens the specified file for writing. Behavior depends on the provided mode and whether the target file exists. If the target file does not exist, it is created and the resulting stream is positioned at the first byte. Otherwise, if the target file exists:- If the mode is
CREATE_NEW
, an error is raised. - If the mode is
OVERWRITE
, the existing file is replaced with the byte written to the resulting stream. - If the mode is
APPEND
, the resulting stream is positioned after the last byte of the existing file.
The returned stream is generally not buffered; consult specific implementations for details.
- Parameters:
path
- the file to writemode
- how to handle writes to existing files- Returns:
- a stream for writing (or appending) the contents of the file
- Throws:
IOException
- if I/O errors occur or if the target is a directoryIllegalArgumentException
- if the path is not is not for a scheme supported by the provider
- If the mode is
-
newFileChannel
FileChannel newFileChannel(Path path) throws IOException
Opens the specified file for random access. Not all schemes support random access; consult specific implementations for details.- Parameters:
path
- the file or directory to read- Returns:
- a stream for reading the contents of the path
- Throws:
IOException
- if I/O errors occurFileNotFoundException
- if the specified path does not existIllegalArgumentException
- if the path is not is not for a scheme supported by the provider
-
exists
boolean exists(Path path) throws IOException
Indicates whether the specified path represents an existing file or directory.- Parameters:
path
- the path to test- Returns:
true
the path exists,false
otherwise.- Throws:
IOException
- if I/O errors occurIllegalArgumentException
- if the path is not is not for a scheme supported by the provider
-
getDetails
PathDetails getDetails(Path path) throws IOException
Returns metadata associated with the specified path.- Parameters:
path
- the path for which to get metadata- Returns:
- metadata for the specified file system object, if
it exists.
null
if it does not exist. - Throws:
IOException
- if I/O errors occur
-
getLength
long getLength(Path path) throws IOException
Returns the length of the file represented by the given path.- Parameters:
path
- the path to test- Returns:
- the length of the file
- Throws:
IOException
- if I/O errors occur
-
isDirectory
boolean isDirectory(Path path) throws IOException
Indicates whether the specified path represents a directory.- Parameters:
path
- the path to test- Returns:
true
the path represents a directory,- Throws:
IOException
-
isFile
boolean isFile(Path path) throws IOException
Indicates whether the specified path represents a file.- Parameters:
path
- the path to test- Returns:
true
the path represents a file,- Throws:
IOException
-
isReadable
boolean isReadable(Path path) throws IOException
Indicates whether the specified path can be read.- Parameters:
path
- the path to test- Returns:
true
the path represents a readable file or directory,false
otherwise.- Throws:
IOException
- if I/O errors occurIllegalArgumentException
- if the path is not is not for a scheme supported by the provider
-
isWritable
boolean isWritable(Path path) throws IOException
Indicates whether the specified path can be written.- Parameters:
path
- the path to test- Returns:
true
the path represents a readable file or directory,false
otherwise.- Throws:
IOException
- if I/O errors occurIllegalArgumentException
- if the path is not is not for a scheme supported by the provider
-
isCreatable
boolean isCreatable(Path path) throws IOException
Indicates whether the specified path can be created.- Parameters:
path
- the path to test- Returns:
true
the path represents a nonexistent file or directory which could be created,false
otherwise.- Throws:
IOException
- if I/O errors occurIllegalArgumentException
- if the path is not is not for a scheme supported by the provider
-
isHidden
boolean isHidden(Path path) throws IOException
Indicates whether the associated path is hidden by the file system.- Parameters:
path
- the path to test- Returns:
true
if the path is hidden,false
otherwise.- Throws:
IOException
- if I/O errors occurIllegalArgumentException
- if the path is not is not for a scheme supported by the provider
-
listDirectory
List<PathDetails> listDirectory(Path path, DirectoryFilter filter) throws IOException
Gets the contents of the specified directory, applying a filter.- Parameters:
path
- the directory for which to get a filtered content listfilter
- a filter to apply to the contents- Returns:
- all children of the directory which pass the filter
- Throws:
IOException
- if I/O errors occur or if the path identifies a fileIllegalArgumentException
- if the path is not is not for a scheme supported by the provider
-
getSplits
SplitIterator getSplits(Path path, SplitOptions options) throws IOException
Computes data splits over the specified file. The supplied options are used to control the division of the file into splits, if the file system supports it.If a provider can provide locality information, it should, as this can be used to guide distributed execution.
- Parameters:
path
- the file for which to get splitsoptions
- configuration for the process of dividing the file- Returns:
- an iterator generating the data splits over the target
- Throws:
IOException
- if an I/O error occurs
-
supportsConcat
boolean supportsConcat()
Returns whether this filesystem supports theconcat
method.- Returns:
- whether this filesystem supports the concat method
-
concat
InputStream concat(List<Path> paths, boolean ignoreNonExistent) throws IOException
Returns an input stream consisting of the given list of paths concatenated together. Most filesystem implementations should not need to implement this method. This is an optimization for remote filesystems to perform a bulk-fetch.- Parameters:
paths
- the list of pathsignoreNonExistent
- whether to skip non-existent files- Returns:
- a concatenated input stream
- Throws:
IOException
UnsupportedOperationException
- If this filesystem does not support concatenation.
-
getImplementation
Object getImplementation()
-
-