java网络编程----实现文件的下载(下载器)【java基础-网络编程】

java实现下载器(以及创建一个URL对象)

1.思路讲解:

(1)注意路径:是网络路径噢

(2)定位网络资源:URL url(通过构造方法,传入网络路径的参数创建)

(4)调用url的openConnection()方法,获得远程对象 urlConnection对象(网络协议对象(远程对象) HttpURLConnection urlConnection)

(5)设置远程对象的参数和属性:例如 urlConnection.setRequestProperty("Range", "bytes=0-");

(6)向远程资源发送连接请求,实现真正的连接:urlConnection.connect();

(7)通过返回码,判断是否连接成功(200以内是成功的)

(8)远程对象连接成功后,创建远程对象输入流

(9)开始读取与写入字节啦

2.代码:

package DownLoadDemo;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.RandomAccess;

public class DownLoaderTest {
    private static final int MAX_SIZE_BUFF = 1024 * 1024 * 10;     //1MB大小
    //网络视频路径
    private static String path = "https://www.iqiyi.com/v_uggavqs43w.html";
    private static String writePath = "111.mp4";
    public static void main(String[] args) throws IOException {
        //网络协议对象(远程对象)
        HttpURLConnection urlConnection = null;
        //定位网络资源
        URL url = new URL(path);
        //调用url的openConnection()连接远程对象
        urlConnection = (HttpURLConnection) url.openConnection();
        //设置远程对象的参数和属性:"Range" : 范围," 0-":没有终止字节数,支持断点续传 
        urlConnection.setRequestProperty("Range", "bytes=0-");
        //发送连接请求,实现真正的连接
        urlConnection.connect();
        //通过返回码,判断是否连接成功(200以内是成功的)
        int code = urlConnection.getResponseCode();
        if(code / 100 != 2) {    //请求失败
            throw new RuntimeException("请求失败,返回码:" + code + "错误");
        }
        //远程对象连接成功后,创建远程对象输入流
        InputStream inputStream = urlConnection.getInputStream();
        //创建bufferedInputStream
//        BufferedInputStream bInStream = new BufferedInputStream(inputStream);
//        //使用RandomAccess工具类
//        RandomAccessFile randomAccess = new RandomAccessFile(path, "rw");
        //创建缓冲字节数组buff
        byte[] buff = null;
        //开始读写
        //1、添加(小技术)打印下载进度(下载的"每块字节"字节数/时间)
        //获取文件大小
        int fileSize = urlConnection.getContentLength();
        System.out.println(fileSize);
        int downloadedCount = 0;
        while(downloadedCount < fileSize) {
            //分块,处理一下最后剩余不足MAX_SIZE_BUFF量
            if(fileSize - downloadedCount > MAX_SIZE_BUFF) {
                buff = new byte[MAX_SIZE_BUFF];
            }else {
                buff = new byte[fileSize - downloadedCount];
            }
            
            int currCount = 0;
            int read = -1;
            long startTime = System.currentTimeMillis();            
//            //读取
//            bInStream.read(buff);
            while(currCount < buff.length) {
                read = inputStream.read();
                if(read == -1) {
                    break;
                }
                buff[currCount++] = (byte)read;
            }
            if(read == -1) {
                break;
            }
            long endTime = System.currentTimeMillis();
            double speed = currCount / ((endTime - startTime) / 1000.0);    //速度b/s
            System.out.println("读取速度:" + speed);
            downloadedCount += currCount;
        }
    
    }
}

3.网络编程知识:

1.URL对象

URL: 统一资源定位符

作用:

☆通过 URL 可以获得互联网资源相关信息,包括获得URL所引用的远程对象URLConnection,以及URL的输入流对象InputStream。

☆类 URL 是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。

简单说,就是在网络上找到资源的位置(统一资源定位符),才可以通过网络的服务进行资源的各种操作:如存取、更新、替换和查找其属性。(得URL所引用的远程对象URLConnection,以及URL的输入流对象InputStream。)

2.创建一个URL对象步骤:

  1. 创建URL对象,并通过调用openConnection方法获得URLConnection对象;
  2. 设置URLConnection参数和普通请求属性;
  3. 向远程资源发送请求;
  4. 远程资源变为可用,程序可以访问远程资源的头字段和通过输入流来读取远程资源返回的信息。

3.连接后返回码含义:

参考自:

Java URL对象的理解和例子_来杯咖啡,随便聊聊。-CSDN博客  (Java URL对象的理解和例子 )

Java网络编程总结 - 残夜 - 博客园  (Java网络编程总结)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
地图下载工具-java是一款基于Java编程语言开发的软件工具,旨在帮助用户快速、方便地下载地图数据。它可以通过网络获取所需的地图数据,并提供给用户进行使用和保存。 地图下载工具-java具有以下主要功能: 1. 地图数据获取:该工具具备与互联网连接的能力,可以获取各种类型的地图数据,如街道地图、卫星影像、交通导航等。用户可以根据需要选择并下载所需的地图数据。 2. 数据格式转换:地图下载工具-java还具备将下载的地图数据进行格式转换的功能。它可以将不同格式的地图数据转换为用户需要的格式,以便用户能够在其他应用程序中使用。 3. 地图数据管理:该工具还提供地图数据的管理功能,用户可以对已下载的地图数据进行分类、整理和编辑。这样可以方便用户根据不同需求进行地图数据的检索和使用。 4. 批量下载:地图下载工具-java支持批量下载功能,用户可以一次性下载多个地图数据,提高操作效率和节省时间。 5. 用户界面友好:该工具拥有直观的用户界面,操作简单、易于使用。用户可以通过简单的点击和拖拽等操作完成地图数据的下载和管理,无需深入了解编程知识。 总之,地图下载工具-java是一款方便实用的软件工具,能够帮助用户轻松获取和管理地图数据。无论是需要进行地图导航、位置搜索还是进行地图分析,该工具都能满足用户的需求,提供高效的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伟庭大师兄

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值