一個Java實現的工具,能下載Github issue裏包含的圖片到本地

package youdao;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class GithubIssueImageDownloader {

	private static final String PREFIX = "C:\\Users\\i042416\\Pictures\\";
	private static final String ISSUEURL = "C:\\Users\\i042416\\git\\JavaTwoPlusTwoEquals5\\src\\youdao\\privateIssue.txt";
	
	private static void createFolder(String title){
		DownloadTask.FOLDER = PREFIX + title;
		File file = new File( DownloadTask.FOLDER);
		file.mkdir();
	}
	
	private static String getUrl(String line){
		int start = line.indexOf("(");
		int last = line.indexOf(")");
		return line.substring(++start, last);
	}
	private static List<DownloadTask> getPicUrlList(){
		int index = 0;
		List<DownloadTask> resultPic = new ArrayList<DownloadTask>();
		BufferedReader br = null;
		try {	
			 br = new BufferedReader(new InputStreamReader(new FileInputStream(ISSUEURL ), "utf-8")); 
			 String line = null;
			 while ((line = br.readLine()) != null) {
				line = getUrl(line);
				DownloadTask task = new DownloadTask( line, index++);
				resultPic.add(task);
			 }
			 br.close();
		}
		catch (FileNotFoundException e) {
				e.printStackTrace();
		} catch (IOException e1) {
				e1.printStackTrace();
		}
		return resultPic;
	}
	
	private static void start(List<DownloadTask> task){
		if( task.isEmpty()){
			System.out.println("No picture to download!");
			return;
		}
		System.out.println("Total pic to be downloaded: " + task.size());
		ExecutorService executor = Executors.newFixedThreadPool(10);
		
		for( int i = 0; i < task.size(); i++){
			PictureDownloader cc = new PictureDownloader(task.get(i));
			executor.execute(cc);			
		}
		
		executor.shutdown();
		while (!executor.isTerminated()) {
        }
		
		System.out.println("download finished");
	}
	
	public static void main(String[] args) {
		createFolder("Test");
		List<DownloadTask> task = getPicUrlList();
		start(task);
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章