java实训报告Word下载.docx

上传人:b****3 文档编号:7281674 上传时间:2023-05-08 格式:DOCX 页数:29 大小:75.67KB
下载 相关 举报
java实训报告Word下载.docx_第1页
第1页 / 共29页
java实训报告Word下载.docx_第2页
第2页 / 共29页
java实训报告Word下载.docx_第3页
第3页 / 共29页
java实训报告Word下载.docx_第4页
第4页 / 共29页
java实训报告Word下载.docx_第5页
第5页 / 共29页
java实训报告Word下载.docx_第6页
第6页 / 共29页
java实训报告Word下载.docx_第7页
第7页 / 共29页
java实训报告Word下载.docx_第8页
第8页 / 共29页
java实训报告Word下载.docx_第9页
第9页 / 共29页
java实训报告Word下载.docx_第10页
第10页 / 共29页
java实训报告Word下载.docx_第11页
第11页 / 共29页
java实训报告Word下载.docx_第12页
第12页 / 共29页
java实训报告Word下载.docx_第13页
第13页 / 共29页
java实训报告Word下载.docx_第14页
第14页 / 共29页
java实训报告Word下载.docx_第15页
第15页 / 共29页
java实训报告Word下载.docx_第16页
第16页 / 共29页
java实训报告Word下载.docx_第17页
第17页 / 共29页
java实训报告Word下载.docx_第18页
第18页 / 共29页
java实训报告Word下载.docx_第19页
第19页 / 共29页
java实训报告Word下载.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

java实训报告Word下载.docx

《java实训报告Word下载.docx》由会员分享,可在线阅读,更多相关《java实训报告Word下载.docx(29页珍藏版)》请在冰点文库上搜索。

java实训报告Word下载.docx

控制信息,即告诉网络怎样处理数据包。

TCP/IP决定了每个数据包的格式。

如果事先不告诉你,你可能不会知道信息被分成用于传输和再重新组合起来的许多小块。

HTTP/1.0

  这是第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用,特别是在代理服务器中。

HTTP/1.1

  当前版本。

持久连接被默认采用,并能很好地配合代理服务器工作。

还支持以管道方式在同时发送多个请求和断点继传,这是ftp不法实现的。

以便降低线路负载,提高传输速度。

二.下载管理器概

Downkoad下载管理器它可以暂停下载并恢复,还可以同时实现多个下载,此外它还可以从下载的中断点恢复下载。

此下载器不仅实现了文件下载功能,它还可以进行功能扩充,只要增加一些类和方法就可以实现。

Download的主要工作由Download类[完成。

它的主要作用是下载一个文件并将其内容保存到磁盘,每次向Download添加一个新的下载任务时,就会有一个新的Download对象被实例化,已处理这个下载。

Download具有同时下载多个文件的能力。

为此,每个进行的下载任务都必须独立进行,且每个单独的下载还管理自己的状态,以便反映在GUI中。

Download类首先声明几个静态的final变量,用来指定类中将使用的几个变量,变量URL用来保存被下载文件的URL,变量size用来指定下载文件的字节数大小,变量Download用来保存已经下载的字节数

主要功能按钮介绍

文本域:

用于输入你要下载的文件的URL地址。

addDownioad:

此按钮被点击时GUI会注册一个监听对象。

url:

用于显示当前正在下载的任务的网络地址。

size:

用于显示下载对象的文件大小。

progress:

用于显示下载完成的百分比。

status:

用于显示当前的下载状态。

pause:

暂停当前的下载任务。

resume:

继续当前的下载任务。

cancel:

取消当前的下载任务。

clear:

将当前的下载任务从列表中删除。

GUI管理当前的下载列表。

列表中的每个下载都会报告它的URL,文件大小(字节形式),完成的百分比进度及当前状态。

根据功能组件的会划分,Downkoad可以分为几个类,DownkoadManager类负责GUI。

DownkoadTableModel和ProgressRenderer类显示当前的下载列表。

Downkoad负责执行文件的实际下载操作。

三.Download、DownloadsTableModel、ProgressRenderer、DownloadManager四个类的代码清单及功能说明

Download类负责执行文件下载操作,它主要作用是下载一个文件并将其保存到磁盘。

DownloadsTableMode类主要用于容纳下载列表,并且是GUI实例的后台数据源。

ProgressRenderer类是一个小的工具类,用于显示列与GUI下载列表的下载的当前速度。

Download类负责创建并运行GUI实例,同时利用DownloadsTableMode和ProgressRenderer,以显示当前的下载列表。

四个类的代码如下

1、Download.java

importjava.io.*;

import.*;

importjava.util.*;

//这个类用于从一个URL地址下载文件

classDownloadextendsObservableimplementsRunnable{

//下载缓冲区最大大小

privatestaticfinalintMAX_BUFFER_SIZE=1024;

//这些是状态名称

publicstaticfinalStringSTATUSES[]={"

Downloading"

"

Paused"

"

Complete"

Cancelled"

Error"

};

//这些是状态代码

publicstaticfinalintDOWNLOADING=0;

publicstaticfinalintPAUSED=1;

publicstaticfinalintCOMPLETE=2;

publicstaticfinalintCANCELLED=3;

publicstaticfinalintERROR=4;

privateURLurl;

//下载地址

privateintsize;

//文件大小(字节)

privateintdownloaded;

//已下载大小(字节)

privateintstatus;

//当前下载状态

//构造下载函数.

publicDownload(URLurl){

this.url=url;

size=-1;

downloaded=0;

status=DOWNLOADING;

//开始下载

download();

}

//获取这个下载的地址

publicStringgetUrl(){

returnurl.toString();

//获取该下载的文件大小

publicintgetSize(){

returnsize;

//获取该下载的下载进度

publicfloatgetProgress(){

return((float)downloaded/size)*100;

//获取该下载的下载状态

publicintgetStatus(){

returnstatus;

//暂停下载

publicvoidpause(){

status=PAUSED;

stateChanged();

//恢复下载

publicvoidresume(){

//取消下载

publicvoidcancel(){

status=CANCELLED;

//标记该下载,因为下载出错

privatevoiderror(){

status=ERROR;

//开始或恢复下载

privatevoiddownload(){

Threadthread=newThread(this);

thread.start();

//从URL地址中获取文件名

privateStringgetFileName(URLurl){

StringfileName=url.getFile();

returnfileName.substring(fileName.lastIndexOf('

/'

)+1);

//下载文件

publicvoidrun(){

RandomAccessFilefile=null;

InputStreamstream=null;

try{

//连接URL

HttpURLConnectionconnection=

(HttpURLConnection)url.openConnection();

//指定下载文件的开始位置(应该是断点续传的意思)

connection.setRequestProperty("

Range"

bytes="

+downloaded+"

-"

);

//连接

connection.connect();

//确定回应代码在200以内

if(connection.getResponseCode()/100!

=2){

error();

//检查有效的内容长度

intcontentLength=connection.getContentLength();

if(contentLength<

1){

//设置下载的大小如果尚未设置

if(size==-1){

size=contentLength;

//打开文件并查找文件尾

file=newRandomAccessFile(getFileName(url),"

rw"

file.seek(downloaded);

stream=connection.getInputStream();

while(status==DOWNLOADING){

//缓冲区大小根据剩余文件大小调整

bytebuffer[];

if(size-downloaded>

MAX_BUFFER_SIZE){

buffer=newbyte[MAX_BUFFER_SIZE];

}else{

buffer=newbyte[size-downloaded];

//从服务器读取并存入缓冲区

intread=stream.read(buffer);

if(read==-1)

break;

//从缓冲区读取并写入文件

file.write(buffer,0,read);

downloaded+=read;

//如果文件下载完成,改变下载状态为complete

if(status==DOWNLOADING){

status=COMPLETE;

}catch(Exceptione){

}finally{

//关闭文件

if(file!

=null){

file.close();

}catch(Exceptione){}

//关闭与服务器的连接

if(stream!

stream.close();

//提醒使用者下载状态已经改变

privatevoidstateChanged(){

setChanged();

notifyObservers();

}

2、DownloadManager.java

importjava.awt.*;

//引入所以的包

importjava.awt.event.*;

//引入所以事件包

//引入网络

//引入所需的使用的包

importjavax.swing.*;

//引入swing文件夹

importjavax.swing.event.*;

//引入swing文件夹下的事件包

//下载管理

publicclassDownloadManagerextendsJFrame//定义下载管理类继承窗口

implementsObserver//实现观察者

{

//下载文本域

privateJTextFieldaddTextField;

//定义文本域增加域

//下载表数据模型

privateDownloadsTableModeltableModel;

//定义下载表格模型

//下载表格列表

privateJTabletable;

//定义表格

//这些按钮为管理选定的下载

privateJButtonpauseButton,resumeButton;

//定义按钮

privateJButtoncancelButton,clearButton;

//当前选择的下载

privateDownloadselectedDownload;

//定义选择下载

//表的选择标记是否被清除

privatebooleanclearing;

//定义类型

//构造函数可下载管理

publicDownloadManager()//定义下载管理

{

//设置应用主题

setTitle("

DownloadManager"

//主题名称

//设置窗口尺寸

setSize(640,480);

//窗口大小

//处理窗口关闭事件

addWindowListener(newWindowAdapter()//增加窗口监听器

publicvoidwindowClosing(WindowEvente)//定义空窗口

actionExit();

//操作出口

}

});

//建立文件菜单

JMenuBarmenuBar=newJMenuBar();

//定义菜单栏

JMenufileMenu=newJMenu("

File"

//定义文件菜单

fileMenu.setMnemonic(KeyEvent.VK_F);

//建立文件菜单

JMenuItemfileExitMenuItem=newJMenuItem("

Exit"

KeyEvent.VK_X);

//菜单文件出口

fileExitMenuItem.addActionListener(newActionListener()//增加退出窗口

publicvoidactionPerformed(ActionEvente)//定义空菜单出口

fileMenu.add(fileExitMenuItem);

//文件菜单

menuBar.add(fileMenu);

//在文件才单中增加菜单条

setJMenuBar(menuBar);

//建立菜单条

//建立增加面板

JPaneladdPanel=newJPanel();

//定义面板

addTextField=newJTextField(30);

//增加文本文件

addPanel.add(addTextField);

//增加面板

JButtonaddButton=newJButton("

AddDownload"

//面板名称

addButton.addActionListener(newActionListener()//增加操作监听器

publicvoidactionPerformed(ActionEvente)//定义所做的操作空间,

actionAdd();

//增加操作

addPanel.add(addButton);

//建立下载表

tableModel=newDownloadsTableModel();

//定义表格模型

table=newJTable(tableModel);

table.getSelectionModel().addListSelectionListener(new

ListSelectionListener()//建立表格

publicvoidvalueChanged(ListSelectionEvente)//定义值的变化

tableSelectionChanged();

//表格选择变化

//只允许一排在同一时间来挑选

table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

//建立表格模型

//建立进度条为描绘器为进度的专栏

ProgressRendererrenderer=newProgressRenderer(0,100);

//定义进度描绘器

renderer.setStringPainted(true);

//显示文本进度

table.setDefaultRenderer(JProgressBar.class,renderer);

//表格建立默认进度

//设定的表的行高足够大适合进度条

table.setRowHeight(

(int)renderer.getPreferredSize().getHeight());

//定义表格行高

//建立下载面板

JPaneldownloadsPanel=newJPanel();

//定义下载面板

downloadsPanel.setBorder(

BorderFactory.createTitledBorder("

Downloads"

));

//下载面板,建立边框

downloadsPanel.setLayout(newBorderLayout());

//下载面板,建立布局

downloadsPanel.add(newJScrollPane(table),//创建滚动窗口

BorderLayout.CENTER);

//边框布局

//设置按钮面板

JPanelbuttonsPanel=newJPanel();

//定义按钮面板

pauseButton=newJButton("

Pause"

//显示暂停按钮

pauseButton.addActionListener(newActionListener()//暂停按钮,增加监听器

publicvoidactionPerformed(ActionEvente)//定义按钮单击方法

actionPause();

//操作暂停

pauseButton.setEnabled(false);

//暂停按钮,建立启用

buttonsPanel.add(pauseButton);

//按钮控制面板,增加暂停按钮

resumeButton=newJButton("

Resume"

//定义重新开始按钮

resumeButton.addActionListener(newActionListener()//重新开始按钮,增加监听器

publicvoidactionPerformed(ActionEvente)//定义监听器

actionResume();

//重新开始操作

resumeButton.setEnabled(false);

//重新开始按钮,建立启用

buttonsPanel.add(resumeButton);

//按钮控制面板,增加重新开始按钮

cancelButton=newJButton("

Cancel"

//定义取消按钮

cancelButton.addActionListener(newActionListener()//取消按钮,增加监听器

actionCancel();

//重新取消操作

cancelButton.setEnabled(false);

//取消按钮,建立启动

buttonsPanel.add(cancelButton);

//按钮控制板,增加取消按钮

clearButton=newJButton("

Clear"

//定义清除按钮

clearButton.addActionListener(newActionListener()//清除按钮,增加监听器

publicvoidactionPerformed(ActionEvente)//定义监听器

actionClear();

//清除操作

clearButton.setEnabled(false);

//清除按钮,建立启动

buttonsPanel.add(clearButton);

//按钮控制板,增加清除

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2