通过java api下载网络文件的方法有很多,在这里我做个汇总,主要方式有以下几种:

1、使用 common-io库下载文件,需要引入commons-io-2.6.jar

public static void downloadByCommonIO(String url, String saveDir, String fileName) {try {FileUtils.copyURLToFile(new URL(url), new File(saveDir, fileName));} catch (IOException e) {e.printStackTrace();}}

2、使用NIO下载文件,需要 jdk 1.4+

public static void downloadByNIO(String url, String saveDir, String fileName) {ReadableByteChannel  rbc = null;FileOutputStream fos = null;FileChannel foutc = null;try {rbc = Channels.newChannel(new URL(url).openStream());File file = new File(saveDir, fileName);file.getParentFile().mkdirs();fos = new FileOutputStream(file);foutc = fos.getChannel();foutc.transferFrom(rbc, 0, Long.MAX_VALUE);} catch (IOException e) {e.printStackTrace();} finally {if (rbc != null) {try {rbc.close();} catch (IOException e) {e.printStackTrace();}}if (foutc != null) {try {foutc.close();} catch (IOException e) {e.printStackTrace();}}}}

3、使用NIO下载文件,需要 jdk 1.7+

public static void downloadByNIO2(String url, String saveDir, String fileName) {

try (InputStream ins = new URL(url).openStream()) {Path target = Paths.get(saveDir, fileName);Files.createDirectories(target.getParent());Files.copy(ins, target, StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {e.printStackTrace();
}

}

4、使用传统io stream下载文件

public static void downloadByIO(String url, String saveDir, String fileName) {BufferedOutputStream bos = null;InputStream is = null;try {byte[] buff = new byte[8192];is = new URL(url).openStream();File file = new File(saveDir, fileName);file.getParentFile().mkdirs();bos = new BufferedOutputStream(new FileOutputStream(file));int count = 0;while ((count = is.read(buff)) != -1) {bos.write(buff, 0, count);}} catch (IOException e) {e.printStackTrace();} finally {if (is != null) {try {is.close();} catch (IOException e) {e.printStackTrace();}}if (bos != null) {try {bos.close();} catch (IOException e) {e.printStackTrace();}}}}
5、使用Byte Array获得stream下载文件public static void  downLoadFromUrl(String urlStr,String fileName,String savePath) throws IOException{URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection)url.openConnection();  //设置超时间为5秒conn.setConnectTimeout(5*1000);//防止屏蔽程序抓取而返回403错误conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");//得到输入流InputStream input = conn.getInputStream();  //获取自己数组byte[] getData = readInputStream(input);    //文件保存位置File saveDir = new File(savePath);if(!saveDir.exists()){saveDir.mkdir();}File file = new File(saveDir+File.separator+fileName);    FileOutputStream output = new FileOutputStream(file);     output.write(getData); if(output!=null){output.close();  }if(input!=null){input.close();}System.out.println("download success!!");}public static  byte[] readInputStream(InputStream inputStream) throws IOException {  byte[] buffer = new byte[10240];  int len = 0;  ByteArrayOutputStream bos = new ByteArrayOutputStream();  while((len = inputStream.read(buffer)) != -1) {  bos.write(buffer, 0, len);  }  bos.close();  return bos.toByteArray();  }

java下载网络文件的N种方式相关推荐

  1. java下载网络中的文件,java下载网络文件解决思路

    java下载网络文件 下面这段代码是下载一个http网络文件的代码,但有时候下载下来的图片是完整的,有时候下载下来的不完整,还有下载的ppt,pdf之类,也是打不开的.请大件们给指导一下,小弟感激不尽 ...

  2. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

  3. java读取csv文件的两种方式

    java读取csv文件的两种方式 1.CsvReader读取 import com.csvreader.CsvReader; /*** CsvReader 读取* @param filePath* @ ...

  4. java解析xml文件的几种方式(DOM解析)

    好久不用的东西,今天居然被面试官问到了.那既然这样,我们就一起回顾下java解析xml文件的几种方式吧. DOM解析 dom解析所需依赖是我们jdk自带的,所以只需要使用jdk为我们提供的接口即可上手 ...

  5. java下载网络文件_java下载网络文件的方法有哪些

    下载网络文件的方法有:字节流下载 apache的FileUtils工具包下载 NIO下载 实现代码如下:package com.dsp.rpc.metricelf; import org.apache ...

  6. java下载网络文件至本地

    通过url下载网络文件至本地 所需依赖和工具类代码 所需依赖 <dependency><groupId>org.apache.httpcomponents</groupI ...

  7. 【转】java下载网络文件至本地

    通过url下载网络文件至本地 所需依赖和工具类代码 所需依赖 <dependency><groupId>org.apache.httpcomponents</groupI ...

  8. java调用python文件的几种方式【超细讲解!】

    java调用python的契机来自于一个项目需要用到算法,但是算法工程师们写的python,于是就有了java后端调用python脚本的需求,中间遇到了许多问题,特此记录整理了一次. 1.java调用 ...

  9. java 下载zip文件_Java以压缩包方式下载文件

    从云服务器上下载文件,以压缩包方式下载 以下载多个文件为例,需要导入zip4j的jar包,版本不要太高 public void downloadZip(List list, HttpServletRe ...

最新文章

  1. 【linux】Valgrind工具集详解(十五):Callgrind(性能分析图)
  2. C#之windows桌面软件第十三课:C#中常用的类有哪些?构造函数怎么用?
  3. 电脑服务器不稳定怎么办,网速不稳定怎么办? 网速不稳定的原因与解决办法-电脑教程...
  4. Linux(Ubuntu) lib 缺失问题
  5. 2020.07笔记本选购指南
  6. php curl 及其参数
  7. stm32基本入门(一)
  8. live555源码编译(win7+vs2010)
  9. js localStorage,sessionStorage
  10. spring mvc 前台属性数据的传递和后台属性数据的接收
  11. hashcode值一样对象一定相同吗_为什么重写equals()方法就必须重写hashcode()方法?...
  12. 苹果手机怎么将PDF转换成JPG图片
  13. Scary Movie 4
  14. 【莫安迪原创摄影作品】深圳最美夕阳-烟云成画
  15. progisp下载时报错Chip Enable Program Error 后续解决
  16. QList添加自定义结构体
  17. 期货怎么克服频繁止损(期货交易怎么止损)
  18. 计算机专硕考数一英一,专硕难度升级!改考数一英一,这所近2.3万人报考的热门高校大改...
  19. metaball公式_parametric.是什么意思
  20. 2019腾讯云计算产品经理面经

热门文章

  1. 用贝叶斯公式解决开奖问题
  2. 大学物理——波动光学
  3. DirBuster工具扫描敏感文件
  4. 【VRP问题】基于节约算法CW求解带硬时间窗的车辆路径规划问题(VRPTW)matlab源码
  5. 惊天阴谋-陈晓如何窃取国美电器的
  6. Win32 高级编程
  7. 软件工程大师 Martin Fowler 谈机器学习持续交付
  8. 初学者如何系统性地学习Linux?
  9. 抖音、快手、火山等小视频去水印
  10. 一文解决Windows系统上的R、Rtools、Rstudio的安装,镜像设置和BiocManager等R包的安装。