java下载网络文件的N种方式
通过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种方式相关推荐
- java下载网络中的文件,java下载网络文件解决思路
java下载网络文件 下面这段代码是下载一个http网络文件的代码,但有时候下载下来的图片是完整的,有时候下载下来的不完整,还有下载的ppt,pdf之类,也是打不开的.请大件们给指导一下,小弟感激不尽 ...
- java读取XML文件的四种方式
java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...
- java读取csv文件的两种方式
java读取csv文件的两种方式 1.CsvReader读取 import com.csvreader.CsvReader; /*** CsvReader 读取* @param filePath* @ ...
- java解析xml文件的几种方式(DOM解析)
好久不用的东西,今天居然被面试官问到了.那既然这样,我们就一起回顾下java解析xml文件的几种方式吧. DOM解析 dom解析所需依赖是我们jdk自带的,所以只需要使用jdk为我们提供的接口即可上手 ...
- java下载网络文件_java下载网络文件的方法有哪些
下载网络文件的方法有:字节流下载 apache的FileUtils工具包下载 NIO下载 实现代码如下:package com.dsp.rpc.metricelf; import org.apache ...
- java下载网络文件至本地
通过url下载网络文件至本地 所需依赖和工具类代码 所需依赖 <dependency><groupId>org.apache.httpcomponents</groupI ...
- 【转】java下载网络文件至本地
通过url下载网络文件至本地 所需依赖和工具类代码 所需依赖 <dependency><groupId>org.apache.httpcomponents</groupI ...
- java调用python文件的几种方式【超细讲解!】
java调用python的契机来自于一个项目需要用到算法,但是算法工程师们写的python,于是就有了java后端调用python脚本的需求,中间遇到了许多问题,特此记录整理了一次. 1.java调用 ...
- java 下载zip文件_Java以压缩包方式下载文件
从云服务器上下载文件,以压缩包方式下载 以下载多个文件为例,需要导入zip4j的jar包,版本不要太高 public void downloadZip(List list, HttpServletRe ...
最新文章
- 【linux】Valgrind工具集详解(十五):Callgrind(性能分析图)
- C#之windows桌面软件第十三课:C#中常用的类有哪些?构造函数怎么用?
- 电脑服务器不稳定怎么办,网速不稳定怎么办? 网速不稳定的原因与解决办法-电脑教程...
- Linux(Ubuntu) lib 缺失问题
- 2020.07笔记本选购指南
- php curl 及其参数
- stm32基本入门(一)
- live555源码编译(win7+vs2010)
- js localStorage,sessionStorage
- spring mvc 前台属性数据的传递和后台属性数据的接收
- hashcode值一样对象一定相同吗_为什么重写equals()方法就必须重写hashcode()方法?...
- 苹果手机怎么将PDF转换成JPG图片
- Scary Movie 4
- 【莫安迪原创摄影作品】深圳最美夕阳-烟云成画
- progisp下载时报错Chip Enable Program Error 后续解决
- QList添加自定义结构体
- 期货怎么克服频繁止损(期货交易怎么止损)
- 计算机专硕考数一英一,专硕难度升级!改考数一英一,这所近2.3万人报考的热门高校大改...
- metaball公式_parametric.是什么意思
- 2019腾讯云计算产品经理面经