Package org.apache.sshd.sftp.client.fs
Class SftpClientDirectoryScanner
- java.lang.Object
-
- org.apache.sshd.common.util.io.PathScanningMatcher
-
- org.apache.sshd.sftp.client.fs.SftpClientDirectoryScanner
-
public class SftpClientDirectoryScanner extends PathScanningMatcher
Uses anSftpClient
to scan a directory (possibly recursively) and find files that match a given set of inclusion patterns.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SftpClientDirectoryScanner.ScanDirEntry
The result of a scan
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.String
basedir
private boolean
filesOnly
-
Fields inherited from class org.apache.sshd.common.util.io.PathScanningMatcher
caseSensitive, includePatterns, separator
-
-
Constructor Summary
Constructors Constructor Description SftpClientDirectoryScanner()
SftpClientDirectoryScanner(boolean caseSensitive)
SftpClientDirectoryScanner(java.lang.String dir)
SftpClientDirectoryScanner(java.lang.String dir, java.lang.String... includes)
SftpClientDirectoryScanner(java.lang.String dir, java.util.Collection<java.lang.String> includes)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.String
createRelativePath(java.lang.String parent, java.lang.String name)
java.lang.String
getBasedir()
java.lang.String
getSeparator()
boolean
isFilesOnly()
Tells whether the scanner is set to return only files and links (the default).java.util.Collection<SftpClientDirectoryScanner.ScanDirEntry>
scan(SftpClient client)
Scans the currentbasedir
<C extends java.util.Collection<SftpClientDirectoryScanner.ScanDirEntry>>
Cscan(SftpClient client, java.util.function.Supplier<? extends C> factory)
protected <C extends java.util.Collection<SftpClientDirectoryScanner.ScanDirEntry>>
Cscandir(SftpClient client, java.lang.String rootDir, java.lang.String parent, C filesList)
void
setBasedir(java.lang.String basedir)
void
setFilesOnly(boolean filesOnly)
Sets whether the scanner shall return only regular files, links, and subdirectories.void
setIncludes(java.util.Collection<java.lang.String> includes)
void
setSeparator(java.lang.String separator)
-
Methods inherited from class org.apache.sshd.common.util.io.PathScanningMatcher
couldHoldIncluded, getIncludes, isCaseSensitive, isIncluded, normalizePattern, setCaseSensitive, setIncludes
-
-
-
-
Constructor Detail
-
SftpClientDirectoryScanner
public SftpClientDirectoryScanner()
-
SftpClientDirectoryScanner
public SftpClientDirectoryScanner(boolean caseSensitive)
-
SftpClientDirectoryScanner
public SftpClientDirectoryScanner(java.lang.String dir)
-
SftpClientDirectoryScanner
public SftpClientDirectoryScanner(java.lang.String dir, java.lang.String... includes)
-
SftpClientDirectoryScanner
public SftpClientDirectoryScanner(java.lang.String dir, java.util.Collection<java.lang.String> includes)
-
-
Method Detail
-
isFilesOnly
public boolean isFilesOnly()
Tells whether the scanner is set to return only files and links (the default).- Returns:
true
if items that are not regular files or subdirectories shall be omitted;false
otherwise
-
setFilesOnly
public void setFilesOnly(boolean filesOnly)
Sets whether the scanner shall return only regular files, links, and subdirectories.- Parameters:
filesOnly
- whether to skip all items that are not regular files, links, or subdirectories
-
getBasedir
public java.lang.String getBasedir()
-
setBasedir
public void setBasedir(java.lang.String basedir)
- Parameters:
basedir
- The base directory from which to start scanning. Note: it is converted to its canonical form when scanning. May not benull
/empty
-
getSeparator
public java.lang.String getSeparator()
- Overrides:
getSeparator
in classPathScanningMatcher
- Returns:
- The file separator to use to parse paths - default=local O/S separator
-
setSeparator
public void setSeparator(java.lang.String separator)
- Overrides:
setSeparator
in classPathScanningMatcher
-
setIncludes
public void setIncludes(java.util.Collection<java.lang.String> includes)
- Overrides:
setIncludes
in classPathScanningMatcher
-
scan
public java.util.Collection<SftpClientDirectoryScanner.ScanDirEntry> scan(SftpClient client) throws java.io.IOException, java.lang.IllegalStateException
Scans the currentbasedir
- Parameters:
client
- TheSftpClient
instance to use- Returns:
- A
Collection
ofSftpClientDirectoryScanner.ScanDirEntry
-ies matching theinclusion patterns
- Throws:
java.io.IOException
- If failed to access the remote file systemjava.lang.IllegalStateException
- If illegal/missing base directory, or missing inclusion patterns, or specified base path is not a directory
-
scan
public <C extends java.util.Collection<SftpClientDirectoryScanner.ScanDirEntry>> C scan(SftpClient client, java.util.function.Supplier<? extends C> factory) throws java.io.IOException, java.lang.IllegalStateException
- Throws:
java.io.IOException
java.lang.IllegalStateException
-
scandir
protected <C extends java.util.Collection<SftpClientDirectoryScanner.ScanDirEntry>> C scandir(SftpClient client, java.lang.String rootDir, java.lang.String parent, C filesList) throws java.io.IOException
- Type Parameters:
C
- Generic collection type- Parameters:
client
- TheSftpClient
instance to userootDir
- The absolute path of the folder to readparent
- The relative parent of the folder to read - may be empty for base directoryfilesList
- The (nevernull
)Collection
ofSftpClientDirectoryScanner.ScanDirEntry
-ies to update- Returns:
- The updated
Collection
ofSftpClientDirectoryScanner.ScanDirEntry
-ies - Throws:
java.io.IOException
- If failed to access remote file system
-
createRelativePath
protected java.lang.String createRelativePath(java.lang.String parent, java.lang.String name)
-
-