JAVA程序实例:Java从网上下载文件的几种方式实例代码详解
龚超 2018-07-24 来源 : 阅读 1120 评论 0

摘要:本文主要向大家介绍了JAVA程序实例的Java从网上下载文件的几种方式实例代码,通过具体的内容向大家展示,希望对大家学习JAVA程序实例有所帮助。

本文主要向大家介绍了JAVA程序实例的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("//www.baidu.com/img/bd_logo1.png", "/home/panda/picture", "baidu_logo.png");

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

}

复制代码

总结

以上所述是小编给大家介绍的Java 从网上下载文件的几种方式实例代码详解,希望对大家有所帮助


本文由 @职坐标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论
本文作者 联系TA

擅长针对企业软件开发的产品设计及开发的细节与流程设计课程内容。座右铭:大道至简!

  • 370
    文章
  • 45095
    人气
  • 83%
    受欢迎度

已有24人表明态度,83%喜欢该老师!

进入TA的空间
求职秘籍 直通车
  • 资料领取 资料领取 资料领取
  • 答疑解惑 答疑解惑 答疑解惑
  • 技术交流 技术交流 技术交流
  • 职业测评 职业测评 职业测评
  • 面试技巧 面试技巧 面试技巧
  • 高薪秘笈 高薪秘笈 高薪秘笈
TA的其他文章 更多>>
WEB前端必须会的基本知识题目
经验技巧 93% 的用户喜欢
Java语言中四种遍历List的方法总结(推荐)
经验技巧 91% 的用户喜欢
Java语言之SHA-256加密的两种实现方法详解
经验技巧 75% 的用户喜欢
java语言实现把两个有序数组合并到一个数组的实例
经验技巧 75% 的用户喜欢
通过Java语言代码来创建view的方法
经验技巧 80% 的用户喜欢
其他海同师资 更多>>
吕益平
吕益平 联系TA
熟悉企业软件开发的产品设计及开发
孔庆琦
孔庆琦 联系TA
对MVC模式和三层架构有深入的研究
戴懿颢​
戴懿颢​ 联系TA
20年+嵌入式开发经验,精多语言 / 云 / 安全 / 数据库
郭自琦
郭自琦 联系TA
16年物联网经验,涉多项目,多校授课,出版书籍并研发IT教程
余承民
余承民 联系TA
8年开发+5年教学经验,指导数千名学员高薪就业
经验技巧30天热搜词 更多>>

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved