Class SftpClientDirectoryScanner


  • public class SftpClientDirectoryScanner
    extends PathScanningMatcher
    Uses an SftpClient to scan a directory (possibly recursively) and find files that match a given set of inclusion patterns.
    • Field Detail

      • basedir

        protected java.lang.String basedir
      • filesOnly

        private boolean filesOnly
    • 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 be null/empty
      • getSeparator

        public java.lang.String getSeparator()
        Overrides:
        getSeparator in class PathScanningMatcher
        Returns:
        The file separator to use to parse paths - default=local O/S separator
      • 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 - The SftpClient instance to use
        rootDir - The absolute path of the folder to read
        parent - The relative parent of the folder to read - may be empty for base directory
        filesList - The (never null) Collection of SftpClientDirectoryScanner.ScanDirEntry-ies to update
        Returns:
        The updated Collection of SftpClientDirectoryScanner.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)