private Stream<FileHandle> acceptedPageCachedFiles( File storeDir ) throws IOException { try { Stream<FileHandle> stream = pageCache.getCachedFileSystem().streamFilesRecursive( storeDir ); Predicate<FileHandle> acceptableFiles = fh -> fileFilter.accept( storeDir, fh.getRelativeFile().getPath() ); return stream.filter( acceptableFiles ); } catch ( NoSuchFileException e ) { // This is fine. Just ignore empty or non-existing directories. return Stream.empty(); } }
public void moveTo( File source, File target, LogFiles logFiles ) throws IOException { fs.mkdirs( logFiles.logFilesDirectory() ); for ( File candidate : fs.listFiles( source, fileFilter ) ) { File destination = logFiles.isLogFile( candidate) ? logFiles.logFilesDirectory() : target; fs.moveToDirectory( candidate, destination ); } Iterable<FileHandle> fileHandles = acceptedPageCachedFiles( source )::iterator; for ( FileHandle fh : fileHandles ) { fh.rename( new File( target, fh.getRelativeFile().getPath() ), StandardCopyOption.REPLACE_EXISTING ); } }