用Java实现HTTP文件队列下载-Java基础-Java-编程开发

Windows下SVN服务器迁移全攻略:从备份到恢复的完整流程(附常见错误解决) 本文详细介绍了在Windows环境下进行SVN服务器迁移的完整流程,从迁移前的健康检查与备份准备,到使用svnadmin dump/load命令进行核心数据迁移,再到迁移后的权限恢复与数据验证。文章重点解析了操作中的常见错误与解决方案,为系统管理员提供了一份安全可靠的迁移指南,确保版本历史与团队协作的平稳过渡。 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>序言

  许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难。

  在Internet上很多的资源分成多个文件存放时,它的文件命名是有一定的规则的;正因如此,我们就可以用程序来完成这个资源的完全下载。

  1. 基础知识

  在Internet上,我们要下载网站上的某个资源,我们会获得一个URL(Uniform Resource Locator),它是一个服务器资源定位的描述,下载的过程总是如下步骤:

  步骤1:客户端发起连接请求一个URL

  步骤2:服务器解析URL,并将指定的资源返回一个输入流给客户

  步骤3:客户端接收输入流,将流中的内容存到文件

  2. 网络连接的建立

  Java提供了对URL访问和大量的流操作的的API,我们可以很容易的完成对网络上资源的存取,下面的代码段就完成了对一个网站的资源进行访问:
......
destUrl="http://www.ebook.com/java/网络编程001.zip";
url = new URL(destUrl);
httpUrl = (HttpURLConnection) url.openConnection();
//连接指定的网络资源
httpUrl.connect();
//获取网络输入流
bis = new BufferedInputStream(httpUrl.getInputStream());
......
  3. 代理的访问

  Java 中通过代理服务器访问外网的方法已经是世人皆知的秘密了。这里就不再多描述了,访问的JAVA代码如下:
//设置代理服务器
System.getProperties().put("proxySet", "true");
System.getProperties().put("proxyHost", "10.154.134.110");
System.getProperties().put("proxyPort", "8080");
  4. 网络资源的保存

  在上节中,我们已经获取了指定网络资源的输入流,接下来我们要完成的就是读取输入流中的所以内容,并将其保存在文件中。示例代码:
......
fos = new FileOutputStream(fileName);
if (this.DEBUG)
System.out.println("正在获取链接[" destUrl "]的内容.../n将其保存为文件[" fileName "]");

//保存文件
while ( (size = bis.read(buf)) != -1)
fos.write(buf, 0, size);
......
  上面的示例代码就将网络资源的内容保存到了本地指定的文件中。

  5. 代码清单
import java.io.*;
import java.net.*;
import java.util.*;

/**
* <p>Title: 个人开发的API</p>
* <p>Description: 将指定的HTTP网络资源在本地以文件形式存放</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: NewSky</p>
* @author MagicLiao
* @version 1.0
*/
public class HttpGet {

  public final static boolean DEBUG = true;//调试用
  private static int BUFFER_SIZE = 8096;//缓冲区大小
  private Vector vDownLoad = new Vector();//URL列表
  private Vector vFileList = new Vector();//下载后的保存文件名列表

  /**
  * 构造方法
  */
  public HttpGet() {}

  /**
  * 清除下载列表
  */
  public void resetList() {
   vDownLoad.clear();
   vFileList.clear();
  }

  /**
  * 增加下载列表项
  *
  * @param url String
  * @param filename String
  */

public void addItem(String url, String filename) {
  vDownLoad.add(url);
  vFileList.add(filename);
}

  /**
  * 根据列表下载资源
  */
public void downLoadByList() {
  String url = null;
  String filename = null;

  //按列表顺序保存资源
  for (int i = 0; i < vDownLoad.size(); i ) {
   url = (String) vDownLoad.get(i);
   filename = (String) vFileList.get(i);

   try {
    saveToFile(url, filename);
   }
   catch (IOException err) {
    if (DEBUG) {
     System.out.println("资源[" url "]下载失败!!!");
    }
   }
  }

  if (DEBUG) {
   System.out.println("下载完成!!!");
  }
}

/**
* 将HTTP资源另存为文件
*
* @param destUrl String
* @param fileName String
* @throws Exception
*/
public void saveToFile(String destUrl, String fileName) throws IOException {
  FileOutputStream fos = null;
  BufferedInputStream bis = null;
  HttpURLConnection httpUrl = null;
  URL url = null;
  byte[] buf = new byte[BUFFER_SIZE];
  int size = 0;

  //建立链接
  url = new URL(destUrl);
  httpUrl = (HttpURLConnection) url.openConnection();
  //连接指定的资源
  httpUrl.connect();
  //获取网络输入流
  bis = new BufferedInputStream(httpUrl.getInputStream());
  //建立文件
  fos = new FileOutputStream(fileName);

  if (this.DEBUG)
   System.out.println("正在获取链接[" destUrl "]的内容.../n将其保存为文件[" fileName "]");

  //保存文件
  while ( (size = bis.read(buf)) != -1)
   fos.write(buf, 0, size);

  fos.close();
  bis.close();
  httpUrl.disconnect();
}

/**
* 设置代理服务器
*
* @param proxy String
* @param proxyPort String
*/
public void setProxyServer(String proxy, String proxyPort) {
  //设置代理服务器
  System.getProperties().put("proxySet", "true");
  System.getProperties().put("proxyHost", proxy);
  System.getProperties().put("proxyPort", proxyPort);
}

/**
* 设置认证用户名与密码
*
* @param uid String
* @param pwd String
*/
public void setAuthenticator(String uid, String pwd) {
Authenticator.setDefault(new MyAuthenticator(uid, pwd));
}

/**
* 主方法(用于测试)
*
* @param argv String[]
*/
public static void main(String argv[]) {
  HttpGet oInstance = new HttpGet();
  try {
   //增加下载列表(此处用户可以写入自己代码来增加下载列表)
   oInstance.addItem("http://www.ebook.com/java/网络编程001.zip","./网络编程1.zip");
   oInstance.addItem("http://www.ebook.com/java/网络编程002.zip","./网络编程2.zip");
   oInstance.addItem("http://www.ebook.com/java/网络编程003.zip","./网络编程3.zip");
   oInstance.addItem("http://www.ebook.com/java/网络编程004.zip","./网络编程4.zip");
   oInstance.addItem("http://www.ebook.com/java/网络编程005.zip","./网络编程5.zip");
   oInstance.addItem("http://www.ebook.com/java/网络编程006.zip","./网络编程6.zip");
   oInstance.addItem("http://www.ebook.com/java/网络编程007.zip","./网络编程7.zip");
   //开始下载
   oInstance.downLoadByList();
  }
  catch (Exception err) {
   System.out.println(err.getMessage());
  }
}
}

2026华为OD机试真题 11月8日 新系统 【寻找服务器组的最小差值下标】 华为OD机试真题 新系统【寻找服务器组的最小差值下标】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【寻找服务器组的最小差值下标】多语言题解。 阅读详情

相关推荐

推荐系统公平性之流行度偏差(fairness in recommender systems -- popularity bias)

主要参考论文:《The Unfairness of Popularity Bias in Recommendation》 RMSE@RecSys 2019 流行度偏差是什么 先定义流行物品和非流行物品。下图是(Movielens 1M)数据集中物品的评分情况。 图的横坐标表示不同物品,纵坐标表示物品的评分次数。可以看出只有少部分物品得到了很多的评分,大部分曲线尾部的物品都只有少量的评分,我们也把这部分物品称为长尾物品。在本文中,我们取曲线的前20%对应的物品为流行物品,剩余的为非流行物品(长尾物品)。 然

beilizhang的博客 5300

Java多线程下载文件

以下载多个文件为例,如何使用多线程机制,高效率的完成下载任务?

laizhenghua的博客 2879

PCIe Crosslink

PCIe Crosslink(交叉连接)是一种特殊的PCIe链路连接方式,允许两个PCIe设备(通常是Root Complex或Endpoint)是指两个PCIe设备(如两个CPU、两个FPGA或两个GPU)通过PCIe链路直接连接,形成点对点(P2P)通信通道。:两个Intel/AMD CPU通过PCIe Crosslink直接通信(替代UPI/Infinity Fabric)。:主板需提供PCIe Crosslink连接(如特定插槽支持x16/x8 Crosslink)。

zly8865372的博客 1639

如何实现java文件队列下载

在Internet上很多的资源分成多个文件存放时,它的文件命名是有一定的规则的;正因如此,我们就可以用程序来完成这个资源的完全下载。  1. 基础知识  在Internet上,我们要下载网站上的某个资源,我们会获得一个URL(Uniform Resource Locator),它是一个服务器资源定位的描述,下载的过程总是如下步骤: 步骤1:客户端发起连接请求一个URL 步骤2:服务器解

付勤的专栏 1562

记录LeNet的硬件加速器设计(一)

LeNet的硬件加速器设计实现。

2301_81029398的博客 3545

Supervisor 安装与使用

一、Supervisor 介绍 Supervisor 是一个用 Python 编写的进程管理工具,它可以用于监控和控制类 UNIX 操作系统上的多个进程。它是一个客户端/服务器系统,其中 Supervisor 的服务器端称为 supervisord,负责启动管理的子进程、响应客户端命令、重启崩溃或退出的子进程、记录子进程的 stdout 和 stderr 输出,以及处理子进程生命周期中的事件。客...

疯子丶pony的博客 3864

用Java实现HTTP文件队列下载

 序言  许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难。  在Internet上很多的资源分成多个文件存放时,它的文件命名是有一定的规则的;正因如此,我们就可以用程序来完成这个资源的完全下载。  1. 基础知识  在Internet上,我们要下载网站上

键者天行 7201

长期换衣行人重识别(Long-Term Clothes-Changing Person Reid)数据集汇总

长期换衣行人重识别任务中目前常用的数据集总览目前换衣数据集的主要问题数据集换衣/总体情况集统计DeepChange(2021)LaST(2021)COCAS(2020)VC-Clothes(2020)LTCC(2020)PRCC(2019)Celebrities-reID(2019) 总览 在长期换衣行人重识别的任务当中,数据集的获取(尤其是对于学术环境下)是一个难点,主要的困难有以下几点: 采集大规模的数据集比较困难。 采集不同的衣服的数据集比较困难。 采集不同衣服不同角度的数据集比较困难。 目前也有

KingsMan666的博客 8384

使用队列来优化递归操作完成文件下载

使用队列来优化递归操作完成文件下载 开发工具与关键技术:eclipse/ 递归&队列 作者:苦行者 撰写时间:2021年4月28日 一、 递归: 问:什么是递归? 答:通俗的讲就是“方法自己调用自己”。 那么它在内存中有什么特点? 递归操作在内存中的原理其实就是一个堆栈的过程,而栈结构的特点是“先进后出”,这与队列的“先进先出”的特性是截然相反的。 一般的,文件上传和下载需用到递归操作,它可以纵向遍历指定好的某个资源目录,然后把指定目录下的所有文件取出来,拿到对应文件的绝对资源路径,再拼接成一个

weixin_44541162的博客 879

Nacos启动报错No DataSource set?5分钟搞定standalone模式配置

本文针对Nacos启动时常见的“No DataSource set”报错,深入解析了其根源在于默认集群模式与外部数据库依赖。提供了两种快速解决方案:通过命令行参数“-m standalone”启动,或直接修改启动脚本配置文件,从而在5分钟内以单机模式成功启动Nacos,无需配置MySQL数据库。

weixin_29234509的博客 465

SR-IOV 网卡虚拟化技术

目录 文章目录目录PCI 与 PCIe 设备SR-IOV在 KVM 中启用 SR-IOV 网卡手动挂载 VF 到虚拟机指令方式挂载SR-IOV 的数据包分发机制 PCI 与 PCIe 设备 PCI(Peripheral Component Interconnect,外设组件互连):符合 PCI 总线标准的设备就被称为 PCI 设备,PCI 总线架构中可以包含多个 PCI 设备。 PCIe(Per......

烟云的计算 7299

java按http地址列表下载文件队列

本文实现的功能是通过url列表下载文件队列,http url地址如:http://172.16.53.187:8080/LiveDownServer/Media/DownloadFile?path=E%3A%2Fvideofiles%2Ftest123%2Fdevelop%2F2015%2F06%2F12%2Fts%2F12%2F20150612124328.ts 路径经过了编码,可以利用java

adgjlxxx的专栏 3210

hadoop 切片机制详解

hadoop切片机制详解

congge 1万+

JAVA基础:用Java实现HTTP文件队列下载

 序言  许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难。   在Internet上很多的资源分成多个文件存放时,它的文件命名是有一定的规则的;正因如此,我们就可以用程序来完成这个资源的完全下载。  1. 基础知识  在Internet上,我们要下载

涅 磐 575

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

使用Java程序来实现HTTP文件的队列下载

序言 许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难。 在Internet上很多的资源分成多个文件存放时,它的文件命名是有一定的规则的;正因如此,我们就可以用程序来完成这个资源的完全下载。 1. 基础知识 在Internet上,我们要下载网站上的某个资源

sfsfssssss的专栏 724

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java 的 HTTP 文件队列下载

Java 的 HTTP 文件队列下载作者:杨辽作者简介杨辽,软件工程师,您可以通过magicsliao@yahoo.com.cn和作者取得联系。序言许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难。在Internet上很

vrix的专栏 1011

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java实现定时从远程服务器下载文件(Redis消息队列)

1.需求 获取Redis队列中的文件名称 更新远程服务器上的资源到本地(Https) 定时刷新,一但那边的服务器上传文件,就下载 2.从Redis中获取文件名称(此时的Redis相当于一个消息队列) /** * @Author Ragty * @Description 定时程序(每十秒请求一次) * @Date 15:05 2019/3/19 **/ ...

huoji555的博客 1552

用Java实现一个多线程HTTP下载服务器,支持暂停、断点续传、重新下载、限速下载、删除、多任务并行下载等功能

一个支持HTTP下载的网站,支持暂停、重新下载、删除、限速和并行多任务下载。包含完整代码和相关注释。

m0_74073836的博客 2608

Java 的 HTTP 文件队列下载(读取流)

Sun技术社区 Java 的 HTTP 文件队列下载 原文地址:http://gceclub.sun.com.cn/yuanchuang/week-15/http.html 下载源代码 作者:杨辽 作者简介 杨辽,软件工程师,您可以通过magicsliao@yahoo.com.cn 和作者取得联系。 序言 许多用户可能会遇到这样的情况:在网站上发现一个很好...

x53611925的专栏 249

异步HTTP请求优先级管理:async-http-client队列实现完整指南

在现代Java应用中,高效处理HTTP请求是提升系统性能的关键。async-http-client作为一款强大的异步HTTP和WebSocket客户端库,通过其先进的**优先级队列机制**,让开发者能够轻松实现请求的智能调度和流量控制。本文将深入解析async-http-client的请求优先级管理策略,帮助您掌握这一重要技术。 ## 🚀 async-http-client优先级队列的核心组件

gitblog_00404的博客 1001

Java实现HTTP文件队列下载

许多用户可能会遇到这样的情况:在网站上发现一个很好的资源,但是这个资源是分成了很多个文件存放的,如果想把它保存到本地,只有靠用户点击另存来完成保存,如果资源分了几百甚至上千上万,那简直是个灾难。   在Internet上很多的资源分成多个文件存放时,它的文件命名是有一定的规则的;正因如此,我们就可以用程序来完成这个资源的完全下载。  1. 基础知识  在Internet

kinglino520的专栏 343
上一篇: 在 Java 应用程序中访问USB设备-Java基础-Java-编程开发
下一篇: 打破Java定律:无需创建对象--Ioc容器革命-Java基础-Java-编程开发
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值