private void readCatsInDirectory ( ReadMode readMode , String dirPath , Path directory ) throws IOException { if ( exceedLimit ) return ; // do any catalogs first try ( DirectoryStream < Path > ds = Files . newDirectoryStream ( directory , "*.xml" ) ) { for ( Path p : ds ) { if ( ! Files . isDirectory ( p ) ) { // path must be relative to rootDir String filename = p . getFileName ( ) . toString ( ) ; String path = dirPath . length ( ) == 0 ? filename : dirPath + "/" + filename ; // reletive starting from current directory CatalogExt ext = catalogTracker . get ( path ) ; long lastRead = ( ext == null ) ? 0 : ext . getLastRead ( ) ; checkCatalogToRead ( readMode , path , false , lastRead ) ; } } } // now recurse into the directory try ( DirectoryStream < Path > ds = Files . newDirectoryStream ( directory ) ) { for ( Path dir : ds ) { if ( Files . isDirectory ( dir ) ) { String dirPathChild = dirPath + "/" + dir . getFileName ( ) . toString ( ) ; // reletive starting from current directory readCatsInDirectory ( readMode , dirPathChild , dir ) ; } } } }
dirPath is the directory relative to rootDir directory is absolute