`

读flashget有感

    博客分类:
  • java
阅读更多

主类:MainFrame

1)导航树:创建树中结点(组合)

2)下载表格:新建表格、表格模型、将表格模型赋给表格

3)信息列表:用List<Info>装了四个Info,然后提交给JList

4)新建任务界面  界面(Box)、按钮的监听

5)工具栏(5Action)新任务、开始、暂停、删除任务、移除已经完成任务

6)悬浮窗口:主窗口、弹出菜单(与托盘同) 内嵌在主类中

7)任务栏图标(6个菜单):打开/关闭、新任务、开始、暂停、移除完成、退出

监听器:

1)点击表格,鼠标监听器,列表显示信息。

2)点击导航树,鼠标监听器,得到选择节点,刷新表格,表格得到模型,模型重设资源对象。

3)窗口关闭监听。

4)任务栏图标的监听。

开始所有任务调用DownloadHandlerresumeDownload()。

删除已下载完的,就从DownloadContext中的resources删除该项。

退出前,先序列化保存。这样可以断点续传

二:

2)导航树类

      节点提交给树、设置树、设置渲染器。

3)树渲染器类  设置该JLabel的图标和名称

三:

4)表格类  设置表格的列宽、设置表格列的渲染器

5)表格模型类 表格所拥有的列名数组、资源集resources、根据资源集返回某单元格值

6)表格渲染器类  设置一个单元格中的显示

7)进度条类 (也是一个渲染器)

四:

8)新建任务界面类  创建资源,调用DownloadHandler类的doDownload(r)方法。

9)悬浮窗类  菜单和监听

五:

10)节点类:

共同父类:DownloadNode

任务TaskNode、正在下载DownloadingNode、下载失败FailNode、下载完成FinishNode

六:

11Info信息类:信息列表中的信息对象。

七:

12)资源对象:

Resource属性:关联的类part

1)资源id。(2)地址url。(3)保存目录filePath。(4)改后的名称fileName

5)状态state。(6)文件大小size。(7)下载起始时间downloadDate

8)进度progress.9)下载速度speed。(10)使用的时间costTime11)剩下的时间spareTime

12)拆分的块集合parts13)线程数threadSize。(14)上一次下载的大小 preLength

根据每个块,计算出当前的总长度currentLength

计算下载速度speed  即:当前的总长度-上一次长度

通过Http的连接(根据url),得到文件总共的大小size

计算进度progress    当前的总长度/总大小

计算剩余时间spareTime  总大小-当前的总长度/速度

设置状态时,要原状态销毁,新状态初始化执行。

 

八:工具集

13)文件工具类

      1)根据地址名得到文件名。(2)删除part临时文件

14)图片工具类

     存储图片的地址,返回图片信息。

15)日期工具类

     给时间格式化

九:

15ContextHolder上下文支持类:

      包含 DownloadContextDownloadHandler

      为了保证这两个对象都只有一份,并且随时随地都可用。

 

十:DAO

16)下载工具上下文 DownloadContext

包含5个状态当前程序的资源集List<Resource>  resources

两种方式来访问:

1)根据状态,得到资源集resources

2)根据资源id查找具体资源

17)下载状态类

   接口TaskState、抽象类AbstractState

   连接Connecting、下载Downloading完成Finished失败Failed暂停Pause

   完成FinishedstopTimer(resource)停止CountTimeTask

   失败FailedstopTimer(resource)停止CountTimeTask

   暂停PausestopTimer(resource)停止CountTimeTask

十一:

18)下载处理类 DownloadHandler

1doDownloadr)开启时间计算任务CountTimeTask,给每part分配任务,开启线程

2stopTimerr)就是停止了时间增长。resumeDownloadr)继续原来任务。

19)下载的线程类DownloadThread

      从服务器读资源到本地。资源的状态的设定。主要的逻辑。

十二:

20Part拆分成的块。

开始位置begin、这个part文件的长度length

Part已经下载的文件长度currentLength、每个Part对应的文件名partName自动生成)。

 

注:

Action对象

1)容器类JMenuJToolBar会为Action对象自动创建组件,并注册监听器。

      jToolBar.add(action);

2Swing组件JButtonJCheckBox用构造方法创建。

      jButton = new JButton(action);

 

输入信息:(1)下载地址(2)保存目录(3)文件名(4)线程数

悬浮窗口与任务栏图标都是调用主类中的几个方法。

图片加载步骤:图片路径(String),得到File,通过ImageIO()类读取得到BufferedImage对象。

 

得到选择树的节点信息步骤:

先是treePath = navTree.getSelectionPath();

然后node = (DefaultMutableTreeNode)treePath.getLastPathComponent();

最后(DownloadNode)node.getUserObject();

 

Resource属性:

1)资源id。(2)地址url。(3)保存目录filePath。(4)改后的名称fileName

5状态state。(6)文件大小size。(7)下载时间downloadDate

8)进度progress.9)下载速度speed。(10)使用的时间costTime11)剩下的时间spareTime

12)拆分的块parts13)线程数threadSize。(14)上一次下载的大小 preLength

对于Resource对象,需要外部传进来赋值的成员就用set方法,否则自己生成。对于状态的设置(起始就是状态的转变),因为设置状态,还要对状态进行处理,所以编写了代码。

自动生成的idUUID.randomUUID().toString();

 

根据url作连接:

URL  resourceURL = new URL(this.url);

HttpURLConnection urlConnection = (HttpURLConnection)resourceURL.openConnection();

urlConnection.connect();

this.size = urlConnection.getContentLength();

urlConnection.disconnect();

 

显示出资源:表格的模型、ContextHolderDownloadContextResource

资源在模型和上下文DownloadContext中是顺序存储的。

行是具体哪个资源,列是资源的成员。

设定资源:主面start()、DownloadHandlerresumeDownloaddoDownloadDownloadThread

所谓刷新表格,就是重设资源对象。

表格的getValue()方法调用了模型的getValue()方法。

 

DownloadContext上下文对像写到序列化文件中。

反序列化完成后,将DownloadContext中的resources存到模型中,然后表格刷新。

 

每个资源都要有个花费的时间,故有个计算时间的任务。

urlConnection.getInputStream();

流需要关闭、连接需要关闭、文件需要关闭。

下载过程:服务器端到流InputStream,流到内存缓冲区buffer,在到文件RandomAccessFile

最后合并part文件。

分享到:
评论

相关推荐

    flashget上传下载工具

    《FlashGet:高效便捷的上传下载利器》 FlashGet,这款知名的互联网下载工具,以其卓越的性能和稳定性,深受广大用户的喜爱。它以其独特的多线程分段下载技术,极大地提高了文件下载的速度和效率,是互联网用户进行...

    flashget

    标题中的“FlashGet”指的是一个著名的互联网下载管理工具,它在早期互联网时代非常流行,尤其在中国用户中广泛应用。FlashGet以其高效、稳定和多线程下载的特点,深受用户喜爱。 FlashGet的主要功能包括: 1. **...

    flashget多线程版

    《FlashGet多线程版:高效下载的利器》 FlashGet,一款经典的多线程下载管理器,以其独特的高速下载能力和强大的文件管理功能,在互联网用户中广受好评。特别是其多线程版本,更是将下载速度提升到了一个新的高度,...

    Flashget下载工具软件

    FlashGet,中文名为“快车”,是一款经典的多线程下载工具,因其在早期互联网时代出色的下载速度和稳定性而深受用户喜爱。它具有许多独特的特点,使得它在众多下载软件中脱颖而出。 首先,FlashGet的核心优势在于其...

    FlashGet v2.2.1229

    FlashGet是一款经典的多线程下载工具,其v2.2.1229版本是该软件的一个特定更新,主要服务于用户快速、高效地下载互联网上的文件。FlashGet以其优秀的分段下载技术和稳定的性能,在众多下载管理器中脱颖而出。 1. **...

    flashget 线程破解补丁

    突破flashget原有的十个线程,不过不要把线程挑的太大,要不对机器不好噢!

    疯狂Java flashget源码

    《疯狂Java flashget源码解析》 在编程领域,源码是理解软件工作原理的最直接途径。"疯狂Java flashget源码"提供了一个模仿知名下载工具FlashGet的多线程下载功能的Java实现,这对于Java开发者,尤其是对多线程编程...

    古董版下载软件FlashGet-1.65

    《古董版下载软件FlashGet-1.65:经典与纯净的下载管理器》 在互联网技术日新月异的今天,许多老旧的软件逐渐淡出人们的视线,但有些经典之作却因其独特的魅力和实用性而被用户珍藏。FlashGet-1.65就是这样一款被...

    Flashget V1.9

    Flashget V1.9是一款经典的多国语言版本下载管理器,专为提高互联网文件下载效率而设计。这个软件以其高效、稳定和用户友好的界面在众多下载工具中脱颖而出。"一键安装"的特性使得用户无需复杂的配置步骤,只需简单...

    发布下载时调用flashget Js代码

    标题中的“发布下载时调用flashget Js代码”是指在网页上发布文件供用户下载时,使用JavaScript(Js代码)来触发FlashGet软件自动下载的一种技术。FlashGet是一款多线程下载管理器,它能够提高下载速度并方便地管理...

    模仿FlashGet下载工具

    《模仿FlashGet下载工具的设计与实现》 FlashGet是一款经典的多线程下载工具,它以其高效、稳定的特点深受用户喜爱。本篇文章将深入探讨如何模仿FlashGet,从设计思路到核心技术,再到具体实现,帮助读者了解下载...

    flashget 1.73

    《FlashGet 1.73:经典下载利器的多线程增强版》 FlashGet,作为一款曾经在互联网上广受好评的下载管理器,以其高效、稳定和易用性赢得了众多用户的青睐。特别是它的1.73版本,被许多资深用户视为经典中的经典。这...

    老版本的flashget,最精简,绿色免安装

    FlashGet,一款经典的老牌多线程下载工具,以其高效、稳定和易用性深受用户喜爱。在互联网初期,它以其独特的“智能动态分割”技术和“多点连接”功能,大大提高了大文件下载的速度和效率,是当时许多网民必备的下载...

    快车flashget_15940_1.rar

    快车flashget_15940_1.rar快车flashget_15940_1.rar快车flashget_15940_1.rar快车flashget_15940_1.rar快车flashget_15940_1.rar快车flashget_15940_1.rar

    一个非常老的FlashGet下载工具

    《FlashGet下载工具:经典与实用的网络下载利器》 FlashGet,作为一款曾经风靡一时的下载管理软件,以其高效、稳定和易用性在众多下载工具中脱颖而出。这款"非常老的FlashGet下载工具"尽管年代久远,但其独特的优势...

    flashget-1.0.3-0_cn.tar.gz

    《FlashGet下载神器:深入解析与使用指南》 FlashGet,中文名“网际快车”,是一款历史悠久且深受用户喜爱的下载管理软件。其1.0.3版本在中国用户群体中有着广泛的应用,因其高效、稳定及多线程下载的特点而备受...

    flashget 2.1

    标题“FlashGet 2.1”指的是一个早期版本的FlashGet下载管理器,这是一款流行的互联网下载工具。FlashGet以其多线程下载技术而闻名,它能够将一个文件分割成多个部分并同时下载,显著提高了下载速度。这个特定的版本...

    flashget3.5.0.1128

    flashget3.5.0.1128繁體中文安裝黨 最好用的快車下載程式.附帶bt下載

    flashget_75356_1.exe

    flashget_75356_1.exe

    FlashGet165a.exe(移出广告及线程限制补丁)

    FlashGet,又称为“快车下载工具”,是一款在中国广受欢迎的多线程下载管理软件。在早期互联网时代,由于带宽限制,用户需要高效的下载工具来提升文件下载速度,FlashGet便是其中的佼佼者。它支持BT、HTTP、FTP等...

Global site tag (gtag.js) - Google Analytics