downloadmanager.java

来自「一个java编写的下载器源码」· Java 代码 · 共 71 行

JAVA
71
字号
package com.leapget.util;

import java.util.ArrayList;
import java.util.List;

/**
 * 负责下载任务
 * 
 * @author  0501xql
 * @date    2008-8-4
 * @version 1.0
 */
public class DownloadManager {

	private List<TaskInfo> taskInfos;		// 记录每个任务的信息
	private List<TaskThread> taskThreads;	// 记录每个任务的线程
	
	public DownloadManager(){
		taskInfos = new ArrayList<TaskInfo>();
		taskThreads = new ArrayList<TaskThread>();
	}
	
	public void addTask(String fileUrl, String savePath, int threadCount){
		addTask(new TaskInfo(fileUrl,savePath,threadCount)); 
	}
	
	public void addTask(TaskInfo task){
		taskInfos.add(task);				// 添加进任务列表
		task.setOrder(taskInfos.size()-1);	// 设置任务的序号
		downloadFile(task);					// 开始下载任务
	}
	
	public void delTask(int index){
		taskInfos.remove(index);
	}
	
	public void delTask(TaskInfo task){
		taskInfos.remove(task);
	}
	
	public TaskThread getTaskThread(TaskInfo task){
		
		/*for(TaskThread t : taskThreads)
			if(t.getTask() == task) return t;
		return null;*/
		return taskThreads.get(task.getOrder());
	}
	
	public int getTaskCount(){
		return taskInfos.size();
	}
	// 下载文件
	private void downloadFile(TaskInfo task){
		if(Debug.isDebug){
			System.out.println("准备下载 " + task.getFileUrl() + " 文件。");
		}
		task.setState(TaskInfo.TASK_NORMAL);			// 标识为新建的任务
		ThreadGroup thGroup = new ThreadGroup("TaskThreads");// 线程分组
		TaskThread tth = new TaskThread(thGroup, task);
		taskThreads.add(tth);							// 记录每个任务线程的信息
		new Thread(tth).start(); 
	}
	// 完成当前下载任务
	public void finished(TaskInfo task){
		FileHelper.uniteFile(task.getSavePath()); 		// 合并文件
		task.setState(TaskInfo.TASK_COMPLETE);			// 设置任务状态为完成
		if(Debug.isDebug){
			System.out.println("文件 " + task.getSavePath() + " 下载完毕!");
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?