Chinaunix首页 | 论坛 | 博客
  • 博客访问: 412707
  • 博文数量: 79
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 897
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-10 23:22
文章分类

全部博文(79)

文章存档

2011年(1)

2010年(6)

2009年(39)

2008年(33)

我的朋友

分类: Java

2008-04-15 15:42:14

一、实验环境

编程语言:Java1.5(运行在JVM(Java Virsual Machine)

开发工具:eclipce3.2

测试环境:互联网实现

二、多任务下载工具编程的实现:

/**

 * 本程序实现多文件的同时下载;

 * 步骤:

 * 1、利用java.net包中的URL类生成urlCon对象进行网络文件的连接;

 * 2、利用urlCon.getInputStream()方法生成文件输入流,

 * 3、通过文件保存对话框”FileDialog实现保存目录选择;

 * 4、从文件输入流读出文件信息写入本地的文件输出流;

 * 5、多文件的同时下载实现原理就是每个下载任务使用一个线程;

 * 作者:蓝蔡

 */

import java.awt.*;

import java.awt.event.*;

import java.net.*;

import javax.swing.*;

import java.io.*;

public class Down {

    public static void main(String[] args) {

    final    JFrame jf              =new JFrame("下载程序");

            JPanel north            =new JPanel();   

            JLabel label            =new JLabel("输入下载网址:");

    final    JTextField address     =new JTextField(30);

    final    JTextArea showArea     =new JTextArea();

            JScrollPane jsp         =new JScrollPane(showArea);

            JPanel south            =new JPanel();   

            JButton downLoad        =new JButton("下载");

            JButton clearUp         =new JButton("清空");

            //north

            north.add(label);

            north.add(address);

            //south

            south.add(downLoad);

            south.add(clearUp);

            //下载按钮触发事件

        downLoad.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e)

            {

                String str =address.getText();

                try

                {

                URL url=new URL(str);

                URLConnection urlCon=url.openConnection();

                final String line =System.getProperty("line.separator");

                //显示下载信息

                showArea.append("文件下载信息:");

                showArea.append(line);

                showArea.append("host :"+url.getHost());

                showArea.append(line);

                showArea.append("port :"+url.getPort());

showArea.append(line);

showArea.append("Contenttype :"+urlCon.getContentType());

                showArea.append(line);            

                showArea.append("Contentlength :"+urlCon.getContentLength());

                showArea.append(line);

                //弹出"保存文件"对话框

                 FileDialog fopen=new FileDialog(jf,"保存文件",FileDialog.SAVE);

                 fopen.show();

                 final String fileStr =fopen.getDirectory()+fopen.getFile();

                 String fileStrJudge =fopen.getFile();

                //判断是否下载文件

                if(fileStrJudge!=null)

                {           

            final FileOutputStream out=new FileOutputStream(fileStr);

                  showArea.append(fileStr+"正在下载......");

                  showArea.append(line);

                  //利用线程实现文件的下载 实现文件下载的并发性 可同时下载多个文件

            final InputStream in=urlCon.getInputStream();

                  Runnable r=new Runnable()

                  {

                    int data;

                    public void run()

                    {

                        try

                        {

                            while((data=in.read())!=-1)

                                out.write(data);

                            out.close();

                            in.close();

                            showArea.append(fileStr+"文件下载成功!");

                            showArea.append(line);

                        }

                        catch(Exception ex)

                        {

                            System.out.println("错误");

                        }

                    }

                };

                Thread t=new Thread(r);

                t.start();

                }//end-if

                else

                {

                    showArea.append("文件下载失败!");

                    showArea.append(line);

                }

                }//end-try

                catch(Exception ex)

                {

                    ex.getStackTrace();

                }

                }});

        //“清空按钮触发事件

        clearUp.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e)

            {

                showArea.setText("");

            }

        });

        jf.getContentPane().add(north,"North");      

        jf.getContentPane().add(jsp,"Center");      

        jf.getContentPane().add(south, "South");

        jf.setSize(500, 500);

        jf.setLocation(100, 100);

        jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);    

        jf.show();

    }

}

程序运行结果如下:

首先点击下载按钮,选择文件保存路径;



实验总结:

本程序没有html文件关联功能,所以下载网页不是很好;

但是下载其他格式的文件比较实用如:rar格式等;

该程序利用一个连接实现一个线程单独下载,所以可以实现多个任务同时下载

阅读(2330) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-07-16 18:59:39

KK娱乐视频网,快乐齐分享 www.yulekk.com 搞笑视频,动漫视频,美女写真,靓丽车模,美女翻唱,精彩MV,经典DV