zl程序教程

您现在的位置是:首页 >  后端

当前栏目

一个Java实现的工具,能下载Github issue里包含的图片到本地

JAVAGitHub工具下载 实现 一个 图片 本地
2023-09-14 09:03:08 时间
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);
	}
}