⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 downloadmanager.java

📁 一个java编写的下载器源码
💻 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 + -