下载网络文件的方法有:字节流下载

apache的FileUtils工具包下载

NIO下载

实现代码如下:package com.dsp.rpc.metricelf;

import org.apache.commons.io.FileUtils;

import java.io.File;

import java.net.HttpURLConnection;

import java.net.URL;

public class DownloadZipUtil {

/**

* FileUtils下载网络文件

*

* @param serverUrl :网络文件地址

* @param savePath:本地保存路径

* @param zipSavePath :压缩文件保存路径

* @return

*/

public static String downloadFile(String serverUrl, String savePath, String zipSavePath) throws Exception {

String result;

File f = new File(savePath);

if (!f.exists()) {

if (!f.mkdirs()) {

throw new Exception("makdirs: '" + savePath + "'fail");

}

}

URL url = new URL(serverUrl);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setConnectTimeout(3 * 1000);

//防止屏蔽程序抓取而放回403错误

conn.setRequestProperty("User-Agent", "Mozilla/4.0(compatible;MSIE 5.0;Windows NT;DigExt)");

Long totalSize = Long.parseLong(conn.getHeaderField("Content-Length"));

if (totalSize > 0) {

FileUtils.copyURLToFile(url, new File(zipSavePath));

result = "success";

} else {

throw new Exception("can not find serverUrl :{}" + serverUrl);

}

return result;

}

/**

* 字节流下载压缩文件

* @param serverUrl :网络地址

* @param savePath :保持路径

* @param zipSavePath :压缩文件保持路径

* @return :下载结果

* @throws Exception :异常

*/

public static String downloadZip(String serverUrl,String savePath,String zipSavePath) throws Exception{

String result = "fail";

File f = new File(savePath);

if(!f.exists()){

if (!f.mkdirs()) {

throw new Exception("makdirs: '" + savePath + "'fail");

}

}

//Sardine是WebDAV的工具包

Sardine sardine = SardineFactory.begin("test","test");

if(sardine.exists(serverUrl)){

URL url = new URL(serverUrl);

URLConnection conn = url.openConnection();

int length = conn.getContentLength();

conn.setConnectTimeout(3 * 1000);

// 防止屏蔽程序抓取而返回403错误

conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

InputStream is = sardine.getInputStream(serverUrl);

BufferedInputStream bis = new BufferedInputStream(is);

FileOutputStream fos = new FileOutputStream(zipSavePath);

BufferedOutputStream bos = new BufferedOutputStream(fos);

int len;

byte[] bytes = new byte[length/5];

while ((len = bis.read(bytes)) != -1) {

bos.write(bytes, 0, len);

}

//清除缓存

bos.flush();

//关闭流

fos.close();

is.close();

bis.close();

bos.close();

result = "success";

}else {

throw new Exception("can not find file");

}

return result;

}

}

java下载网络文件_java下载网络文件的方法有哪些相关推荐

  1. java下载网络文件_java 从网络Url中下载文件

    /** * 从网络Url中下载文件 * @param urlStr * @param fileName * @param savePath * @throws IOException */ publi ...

  2. java批量上传文件_Java 批量大文件上传下载

    第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null; String newpathname =  ...

  3. java 批量写入文件_Java批量写入文件和下载图片的示例代码

    很久没有在WhitMe上写日记了,因为觉着在App上写私密日记的话肯定是不安全的,但是想把日记存下来.,然后看到有导出日记的功能,就把日记导出了(还好可以直接导出,不然就麻烦点).导出的是一个html ...

  4. java 打包下载文件_java下载打包下载文件

    一:对于文件的一些操作 1.创建文件夹 private String CreateFile(String dir) { File file = new File(dir); if (!file.exi ...

  5. java网络编程_Java基础 网络编程

    主要内容 软件架构CS/BS 网络通信三要素 TCP通信 Socket套接字 ServerSocket 教学目标 能够辨别UDP和TCP协议特点 能够说出TCP协议下两个常用类名称 能够编写TCP协议 ...

  6. java nio 文件_Java nio 的文件处理

    一.创建一个大文件 下载文件时往往会创建一个指定大小的空文件 package com.lazy.nio; import java.io.IOException; import java.nio.Byt ...

  7. 取消java相关网络协议_java相关网络协议可以关掉吗

    Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言.Java 技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网,同时拥 ...

  8. java excel 导入导出_java中excel文件的导入和导出

    如有需要可以加我Q群[308742428]大家一起讨论技术,提供技术支持. 后面会不定时为大家更新文章,敬请期待. 前端上传excel文件到后台,后台接收后保存数据到数据库. 这里需要说明的一点是前端 ...

  9. java 生成csv文件_Java生成CSV文件实例详解

    本文实例主要讲述了java生成csv文件的方法,具体实现步骤如下: 1.新建csvutils.java文件: package com.saicfc.pmpf.internal.manage.utils ...

  10. java写入dat文件_java写入dat文件

    Java的输入输出包括字节流.文件流.对象流等,要注意区分不同流使用的不同类.字... Java的输入输出包括字节流.文件流.对象流等,要注意区分不同流使用的不同类.字... Java的输入输出包括字 ...

最新文章

  1. Installshield建立IE快捷方式的方法
  2. 一篇演讲 By 浙江大学数学系主任刘克峰
  3. CV与IP:基础,经典以及最近发展
  4. SDNE: 阿里应用深度学习进行图嵌入,构造凑单算法模型
  5. YUI3下widget的plugin开发
  6. sevlet 注释initparams_servlet3.0注解配置学习笔记
  7. ubuntu 16.04 Nginx源码部署安装
  8. 【LeetCode】剑指 Offer 32 - III. 从上到下打印二叉树 III
  9. php多少内置函数,php有多少个内置函数
  10. 关于文件路径的斜杠和反斜杠问题
  11. leetcode题库6-- Z 字形变换
  12. C语言中怎么将变量名转换为字符串 -转
  13. 3月2日 ESC CAN 比特率 波特率 带宽与容量 香农定理 奈奎斯特定理 信噪比
  14. mysql索引小结_[数据库]mysql索引小结_星空网
  15. 新华三杯考前突击---Day3---大数据平台技术篇
  16. Linux/Windows/C++网络开源库项目集合
  17. 洞态IAST源码分析及吐槽
  18. ros平台下python脚本控制机械臂运动
  19. geforce experience出现错误尝试重启PC
  20. 【Pigeon源码阅读】服务注册发布流程(四)

热门文章

  1. python 字符串替换多个_python同时替换多个字符串方法示例
  2. ActiveXObject文件读写
  3. easy connect电脑版_北师大版小学英语六年级上册Unit4课文听力+翻译+单词录音跟读+高清课本(一起点)...
  4. matlab端到端仿真中基站功率,基于matlab的cdma通信系统分析及仿真
  5. vfp 连接mysql数据库_Visual FoxPro操作数据库之函数大全
  6. OpenShift 4 - DevSecOps Workshop (9) - 向Dev环境部署应用镜像
  7. OpenShift 4 - 用KubeletConfig和ContainerRuntimeConfig分别修改集群节点的Kubelet和cri-o的配置
  8. (三)重构ResNet50以诊断COVID-19
  9. 带有GraphQL数据访问和JWT身份验证的.NET 5服务
  10. 化身阿凡达,国外小哥开源 AI 实时变脸工具 Avatarify