废话不多说了,直接给大家贴代码了,具体代码如下所示;

package com.github.pandafang.tool;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.URL;

import java.nio.channels.Channels;

import java.nio.channels.FileChannel;

import java.nio.channels.ReadableByteChannel;

import java.nio.file.Files;

import java.nio.file.Path;

import java.nio.file.Paths;

import java.nio.file.StandardCopyOption;

import org.apache.commons.io.FileUtils;

/**

* 文件工具类

* @author panda fang

* @date 2017-08-26

* @version 1.0

*/

public class FileTool {

/**

* 使用传统io stream 下载文件

* @param url

* @param saveDir

* @param fileName

*/

public static void download(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();

}

}

}

}

/**

* 利用 commonio 库下载文件,依赖Apache Common IO ,官网 https://commons.apache.org/proper/commons-io/

* @param url

* @param saveDir

* @param fileName

*/

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

try {

FileUtils.copyURLToFile(new URL(url), new File(saveDir, fileName));

} catch (IOException e) {

e.printStackTrace();

}

}

/**

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

* @param url

* @param saveDir

* @param fileName

*/

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();

}

}

}

}

/**

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

* @param url

* @param saveDir

* @param fileName

*/

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();

}

}

}

下载一个百度logo 测试一下

public static void main(String[] args) {

FileTool.downloadByNIO2("http://www.baidu.com/img/bd_logo1.png", "/home/panda/picture", "baidu_logo.png");

System.out.println("done...");

}

总结

以上所述是小编给大家介绍的Java 从网上下载文件的几种方式实例代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

时间: 2017-08-26

java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解相关推荐

  1. Java下载文件的四种方式详细代码

    1.以流的方式下载 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 public HttpS ...

  2. python 下载文件-Python下载文件的11种方式

    原标题:Python下载文件的11种方式 在本教程中,你将学习如何使用不同的Python模块从web下载文件.此外,你将下载常规文件.web页面.Amazon S3和其他资源. 最后,你将学习如何克服 ...

  3. 前端下载文件的几种方式

    前端下载文件的几种方式 前言 1. window.open 2. window.location.href 3. a标签 4. iframe 5. blob 前言 总结下载文件的几种方式,文件都是通过 ...

  4. Java下载文件的几种方式

    public HttpServletResponse download(String path, HttpServletResponse response) {try {// path是指欲下载的文件 ...

  5. java文件下载controller_Java Spring MVC 上传下载文件配置及controller方法详解

    下载: 1.在spring-mvc中配置(用于100M以下的文件下载) 下载文件代码 @RequestMapping("/file/{name.rp}") public Respo ...

  6. 【Linux】部署Springboot项目到Linux服务器以及linux服务器下载文件的三种方式详解

    Linux学习之路 初识Linux Linux内核 由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写 Linux 是一套免费使用和自由传播的类Unix操作系 ...

  7. java上传加密_Java上传下载文件并实现加密解密

    使用 Jersey 服务器实现上传,使用 HTTP 请求实现下载 引入依赖 在 pom.xml 中添加 Jersey 相关依赖 com.sun.jersey jersey-client 1.18.1 ...

  8. java file 下载文件_java下载文件的几种方式

    public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的 ...

  9. java 文件下载方法_【工具类】Java后台上传下载文件的几种方式

    /** * 将本地照片上传至腾讯云服务上 */ public void uploadImage(String localImagePath) throws Exception { // 1.将订单照片 ...

最新文章

  1. Ubuntu搭建git服务器,外网可访问
  2. 限制python内存上限_Python限制内存和CPU使用量的方法(Unix系统适用)
  3. Linux - 操作系统查找文件的过程以及硬链接与软链接的区别
  4. windows遍历目录下所有文件
  5. spark中saveAsTextFile如何最终生成一个文件
  6. phoneGap技术分析
  7. 怎么用Python写出随时间变化的字_面试必备 | 带你彻底搞懂 Python 生成器
  8. 转:程序员这口饭-职业规划解决方案
  9. 计算机操作系统学习之信号量机制
  10. 第三阶段应用层——1.7 数码相册—电子书(2)—编写通用的Makefile
  11. android 读取单反相机,手机怎么直接读取相机照片更方便?
  12. 【PhpSpreadsheet】实现excel冻结列和行(即左右滚动时指定列和行固定不动)
  13. Android画图方式
  14. django orm原理_django 动态创建一个模型的多个table name, 并通过 Django ORM 操作
  15. warning: LF will be replaced by CRLF in ****. The file will have its original line endings in y
  16. HTTP协议详解由浅入深看HTTP
  17. c语言注释两种,C语言有几种注释方式
  18. python3.6安装scrapy出错_python3.6安装scrapy
  19. CSS属性 – font-size
  20. web前端各种浏览器版本测试工具-turbo

热门文章

  1. 语义分割 - 数据集准备
  2. 快速排序的C++实现(利用二分分治法)
  3. 使用Nexus配置Maven私有仓库
  4. 盒马鲜生颠覆传统生鲜市场的胜算几何?
  5. Xamarin.Android SharedPreferences的使用方法
  6. IIS 7 及以上 IIS错误页“编辑功能设置...”提示“锁定冲突”
  7. smem – Linux 内存监视软件
  8. ant用途及简单实现
  9. 《cocos2d-x手机游戏开发实战》直播课程第一期介绍
  10. jQuery插件开发中$.extend和$.fn.extend辨析