📄 downloadmanager.java
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -