全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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 从网上下载文件的几种方式实例代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# java  # 下载文件  # Java Spring MVC 上传下载文件配置及controller方法详解  # JAVA技术实现上传下载文件到FTP服务器(完整)  # Java通过FTP服务器上传下载文件的方法  # java操作ftp下载文件示例  # Java下载文件时文件名乱码问题解决办法  # 使用java实现http多线程断点下载文件(二)  # 使用java实现http多线程断点下载文件(一)  # 给大家  # 小编  # 在此  # 说了  # 不多  # 几种  # 所示  # 所述  # 给我留言  # 官网  # 感谢大家  # 测试一下  # 疑问请  # 有任何  # 网上  # version  # fang  # public  # FileUtils  # commons 


相关文章: PHP 500报错的快速解决方法  建站之星如何实现PC+手机+微信网站五合一建站?  如何在云主机上快速搭建网站?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  建站之星安装后界面空白如何解决?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  如何安全更换建站之星模板并保留数据?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  建站10G流量真的够用吗?如何应对访问高峰?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  设计网站制作公司有哪些,制作网页教程?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  如何高效配置香港服务器实现快速建站?  如何选择CMS系统实现快速建站与SEO优化?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  小型网站制作HTML,*游戏网站怎么搭建?  制作企业网站建设方案,怎样建设一个公司网站?  如何在自有机房高效搭建专业网站?  已有域名能否直接搭建网站?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  如何正确选择百度移动适配建站域名?  宿州网站制作公司兴策,安徽省低保查询网站?  如何快速搭建响应式可视化网站?  如何在服务器上三步完成建站并提升流量?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何快速完成中国万网建站详细流程?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?    如何高效利用亚马逊云主机搭建企业网站?  建站之星安装失败:服务器环境不兼容?  怀化网站制作公司,怀化新生儿上户网上办理流程?  南平网站制作公司,2025年南平市事业单位报名时间?  如何确认建站备案号应放置的具体位置?  如何快速搭建高效可靠的建站解决方案?  建站之星多图banner生成与模板自定义指南  广东专业制作网站有哪些,广东省能源集团有限公司官网?  Android使用GridView实现日历的简单功能  如何快速生成ASP一键建站模板并优化安全性?  如何快速查询网站的真实建站时间?  建站之星北京办公室:智能建站系统与小程序生成方案解析  建站之星伪静态规则如何设置?  如何在七牛云存储上搭建网站并设置自定义域名?  移民网站制作流程,怎么看加拿大移民官网?  如何撰写建站申请书?关键要点有哪些?  如何基于云服务器快速搭建个人网站?  如何在阿里云完成域名注册与建站?  网站制作模板下载什么软件,ppt模板免费下载网站?  安徽网站建设与外贸建站服务专业定制方案 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。