class StoreFiles {

    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 );
        }
    }

    public  StoreFiles( FileSystemAbstraction fs, PageCache pageCache );
    public  StoreFiles( FileSystemAbstraction fs, PageCache pageCache, FilenameFilter fileFilter );

}