JAVA实现多任务下载程序

本文介绍了一个基于Java1.5的多任务下载工具的实现方法。该工具使用Eclipse3.2开发,在互联网环境下运行。核心功能包括利用URL类进行网络文件连接、通过输入流读取文件并保存到本地,以及通过多线程实现多文件同时下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验环境

 

编程语言: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 {

 @SuppressWarnings("deprecation")
 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);
     }
    }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();

 }

}

------------------------------------------------------------

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值