@Override
    public void downloadAllFiles() {
        Map<String, WikiResourceMeta> newFileMetaList = new HashMap<String, WikiResourceMeta>(alreadyDownloadMeta);

        try {
            Map<String, WikiResourceMeta> fileMetaList = getFileUrls();

            for (Map.Entry<String, WikiResourceMeta> fileMeta : fileMetaList.entrySet()) {
                WikiResourceMeta meta = fileMeta.getValue();

                // check timestamp for update
                if(alreadyDownloadMeta.containsKey(meta.getNormalizeUrl())){
                    WikiResourceMeta oldmeta = newFileMetaList.get(meta.getNormalizeUrl());

                    if(meta.getUpdateTime().equals(oldmeta.getUpdateTime())) {
                        continue;
                    }else{
                        oldmeta.setUpdateTime(meta.getUpdateTime());
                    }
                }else{
                    newFileMetaList.put(fileMeta.getKey(), fileMeta.getValue());
                }

                System.out.println("new: " + meta.getNormalizeUrl() + "\t" + meta.getNormalizeFileName());

                URL fileurl = new URL(WikiConf.HOST_PREFIX + meta.getNormalizeUrl());
                ReadableByteChannel rbc = Channels.newChannel(fileurl.openStream());

                FileOutputStream fos = null;
                try{
                    fos = new FileOutputStream(outputFolder + meta.getNormalizeFileName());
                    fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
                }catch(Exception ex){
                    ex.printStackTrace();
                }finally{
                    try{
                        if(fos != null) {
                            fos.close();
                        }
                    }catch(Exception ex){
                        ex.printStackTrace();
                    }
                }

            }
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        updateAlreadyDownload(outputFolder + "mediawikispider.md", newFileMetaList);
    }