java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解
废话不多说了,直接给大家贴代码了,具体代码如下所示;
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 从网上下载文件的几种方式实例代码详解相关推荐
- 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 ...
- python 下载文件-Python下载文件的11种方式
原标题:Python下载文件的11种方式 在本教程中,你将学习如何使用不同的Python模块从web下载文件.此外,你将下载常规文件.web页面.Amazon S3和其他资源. 最后,你将学习如何克服 ...
- 前端下载文件的几种方式
前端下载文件的几种方式 前言 1. window.open 2. window.location.href 3. a标签 4. iframe 5. blob 前言 总结下载文件的几种方式,文件都是通过 ...
- Java下载文件的几种方式
public HttpServletResponse download(String path, HttpServletResponse response) {try {// path是指欲下载的文件 ...
- java文件下载controller_Java Spring MVC 上传下载文件配置及controller方法详解
下载: 1.在spring-mvc中配置(用于100M以下的文件下载) 下载文件代码 @RequestMapping("/file/{name.rp}") public Respo ...
- 【Linux】部署Springboot项目到Linux服务器以及linux服务器下载文件的三种方式详解
Linux学习之路 初识Linux Linux内核 由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写 Linux 是一套免费使用和自由传播的类Unix操作系 ...
- java上传加密_Java上传下载文件并实现加密解密
使用 Jersey 服务器实现上传,使用 HTTP 请求实现下载 引入依赖 在 pom.xml 中添加 Jersey 相关依赖 com.sun.jersey jersey-client 1.18.1 ...
- java file 下载文件_java下载文件的几种方式
public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的 ...
- java 文件下载方法_【工具类】Java后台上传下载文件的几种方式
/** * 将本地照片上传至腾讯云服务上 */ public void uploadImage(String localImagePath) throws Exception { // 1.将订单照片 ...
最新文章
- Ubuntu搭建git服务器,外网可访问
- 限制python内存上限_Python限制内存和CPU使用量的方法(Unix系统适用)
- Linux - 操作系统查找文件的过程以及硬链接与软链接的区别
- windows遍历目录下所有文件
- spark中saveAsTextFile如何最终生成一个文件
- phoneGap技术分析
- 怎么用Python写出随时间变化的字_面试必备 | 带你彻底搞懂 Python 生成器
- 转:程序员这口饭-职业规划解决方案
- 计算机操作系统学习之信号量机制
- 第三阶段应用层——1.7 数码相册—电子书(2)—编写通用的Makefile
- android 读取单反相机,手机怎么直接读取相机照片更方便?
- 【PhpSpreadsheet】实现excel冻结列和行(即左右滚动时指定列和行固定不动)
- Android画图方式
- django orm原理_django 动态创建一个模型的多个table name, 并通过 Django ORM 操作
- warning: LF will be replaced by CRLF in ****. The file will have its original line endings in y
- HTTP协议详解由浅入深看HTTP
- c语言注释两种,C语言有几种注释方式
- python3.6安装scrapy出错_python3.6安装scrapy
- CSS属性 – font-size
- web前端各种浏览器版本测试工具-turbo
热门文章
- 语义分割 - 数据集准备
- 快速排序的C++实现(利用二分分治法)
- 使用Nexus配置Maven私有仓库
- 盒马鲜生颠覆传统生鲜市场的胜算几何?
- Xamarin.Android SharedPreferences的使用方法
- IIS 7 及以上 IIS错误页“编辑功能设置...”提示“锁定冲突”
- smem – Linux 内存监视软件
- ant用途及简单实现
- 《cocos2d-x手机游戏开发实战》直播课程第一期介绍
- jQuery插件开发中$.extend和$.fn.extend辨析