用JAVA写一个下载器第1集


一、开发环境及工具

开发环境及工具
IDEA
JDK8
UTF-8


二、包名概览

constant:存放常量类的包
core:存放了下载器核心类的包
util:存放工具类的包
Main:主类

三、项目结构

在这里插入图片描述
Main是主类,主函数在其中。

四、使用步骤

1.创建一个空项目

在这里插入图片描述

2.编写代码

Main.java:

package com.downloader;

import com.downloader.core.Downloader;

import java.util.Scanner;

public class Main {
    /*主类,程序的入口*/
    public static void main(String[] args) {
        String url=null;//用来放下载连接的地址。
        if(args!=null && args.length!=0){//判断主函数的传入字符数组是否为空
            url=args[0];//如果不为空,对url进行赋值arg[0]
        }else {
            while (true){//主函数传入字符数组为空,进入while循环
                System.out.println("请输入下载文件的地址。");
                Scanner scanner=new Scanner(System.in);//在控制台中获取输入的信息。
                url=scanner.next();//对url进行赋值,为控制台中输入的信息。
                if(url!=null){//如果url不为空,结束while循环。
                    break;
                }
            }
        }
        Downloader downloader = new Downloader();
        downloader.download(url);
    }
}

HttpUtils.java:

package com.downloader.util;

import java.io.IOException;
import java.net.*;

/*http相关工具类*/
public class HttpUtils {
    /*获取HttpURLConnection连接对象*/
    public static HttpURLConnection getHttpURLConnection(String url) throws IOException {
        URL httpUrl = new URL(url);
        HttpURLConnection urlConnection = (HttpURLConnection)httpUrl.openConnection();
        //向文件所在的服务器发送标识信息
        urlConnection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1");
        return urlConnection;
    }

    /*获取下载文件的名称*/
    public static String getHttpFileName(String url){
        int indexOf = url.lastIndexOf("/");
        return url.substring(indexOf+1);
    }
}

Downloader.java:

package com.downloader.core;

import com.downloader.constant.Constant;
import com.downloader.util.HttpUtils;
import com.sun.imageio.spi.FileImageOutputStreamSpi;

import java.io.*;
import java.net.HttpURLConnection;

/*下载器*/
public class Downloader {
    public void download(String url){
        //获取文件名
        String httpFileName = HttpUtils.getHttpFileName(url);
        //文件保存路径
        httpFileName= Constant.PATH+httpFileName;

        //获取连接对象
        HttpURLConnection httpURLConnection =null;
        try {
            httpURLConnection = HttpUtils.getHttpURLConnection(url);
        } catch (IOException e) {
            e.printStackTrace();
        }

        try (
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
                FileOutputStream fileOutputStream = new FileOutputStream(httpFileName);
                BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);

                ){
            int len=-1;
            while ((len=bufferedInputStream.read())!=-1){
                bufferedOutputStream.write(len);
            }

        } catch (FileNotFoundException e) {
            System.out.println("下载的文件不存在");
        }catch (Exception e){
            System.out.println("下载失败");
        }finally {
            if (httpURLConnection!=null){
                httpURLConnection.disconnect();//关闭连接
            }
        }

    }
}

Constant.java:

package com.downloader.constant;

/*常量类*/
public class Constant {
    public static final String PATH="D:\\Java_dm\\TestDownloaderPath\\";
}


3.运行程序

在这里插入图片描述
在控制台中输入要下载文件的地址,例如:https://downv6.qq.com/qqweb/QQ_1/android_apk/tim_3.5.1.3168_537150355_64.apk
下载一个APK的文件。等待程序运行结束,需要几分钟,耐心等待,之后会在D:\Java_dm\TestDownloaderPath的文件夹中找到tim_3.5.1.3168_537150355_64.apk文件。
在这里插入图片描述


留言

文章中已经提供全部代码,如果需要源码的可以在下方留言或者私信。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
注意: 如果下载后无法直接运行,则查看电脑是否有F盘,如果没有,可修改jar包中的配置文件,将默认路径设置到其他盘,如C盘 说明: 1、这是myDownloader2.0自制下载,在1.0版本的基础上做了修正和功能上的扩展; 2、该“myDownloader2.0资源包”包括: (1)“myDownloader_2.0”文件夹,保存下载的源码, 其中包含的doc文件夹存放的是有MyEclipse,javadoc生成的关于下载的API文档; (2)“jar包”文件夹,其中myDownloader2.0.jar可以双击运行下载 (前提,电脑上装有JDK环境)。 3、可查看下载“功能介绍”了解下载具体功能。 功能介绍; 1、基本下载功能; 2、支持多任务多线程同时下载; 3、每个任务的线程数由用户在新建任务时自定义,缺省为5个线程; 4、任务下载过程中可以点击“线程+”或“线程-”即时增减线程; 5、选择任务,可以在任务信息栏中查看任务下载的信息; 6、对于正在下载和暂停的任务,可以再下载分块图示中查看文件的分块下载情况; (灰色为未下载,绿色为下载中,蓝色为完成) 7、若下载中删除任务,则任务会先暂停,再被移动到垃圾箱中; 8、整个界面分为三个视图:正在下载、已完成、垃圾箱; 9、下载过程可以暂停任务,点击开始可以继续下载; 10、对于失败的任务可以选择重新下载; 11、删除任务,如任务当前在正在下载或已完成,则任务将被删除到垃圾箱中, 若在垃圾箱中删除任务,则是彻底删除; 12、垃圾箱中的任务可以恢复回正在下载或已下载视图中; 13、可以点击“打开”,打开已完成的任务; 14、右键“打开文件夹”可以打开任务文件被下载到的文件夹; 15、清空垃圾箱; 16、菜单栏“关于”,查看版本及作者等信息; 17、菜单栏“功能介绍”,查看下载的相关功能介绍; 18、程序退出前会自动暂停所有正在下载的任务,并保存到临时文件中, 下次启动程序可以继续下载; 19、程序启动时,会在电脑中检查创建myDownloader下载的相应文件夹, 用于保存临时文件和日志文件; 文件夹具体路径可以到myDownloader.ini中进行配置,缺省为:F:/myDownloader 20、功能尚在扩展中,请多提意见和建议。 2009年10月 CASHUANGNING
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值