全网整合营销服务商

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

免费咨询热线: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 


相关文章: 如何配置WinSCP新建站点的密钥验证步骤?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  金*站制作公司有哪些,金华教育集团官网?  内部网站制作流程,如何建立公司内部网站?  建站上传速度慢?如何优化加速网站加载效率?  建站主机解析:虚拟主机配置与服务器选择指南  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  如何通过万网虚拟主机快速搭建网站?  如何用5美元大硬盘VPS安全高效搭建个人网站?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  建站之星安装提示数据库无法连接如何解决?  建站之星收费标准详解:套餐费用及年费价格表一览  详解jQuery中基本的动画方法  ,sp开头的版面叫什么?  微信小程序 input输入框控件详解及实例(多种示例)  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  公司网站设计制作厂家,怎么创建自己的一个网站?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  建站之星如何保障用户数据免受黑客入侵?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  如何在Golang中使用replace替换模块_指定本地或远程路径  如何在万网自助建站中设置域名及备案?  如何在阿里云虚拟主机上快速搭建个人网站?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  网站图片在线制作软件,怎么在图片上做链接?  孙琪峥织梦建站教程如何优化数据库安全?  如何在建站主机中优化服务器配置?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  个人摄影网站制作流程,摄影爱好者都去什么网站?  c# 在ASP.NET Core中管理和取消后台任务  网站制作话术技巧,网站推广做的好怎么话术?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  网站制作的步骤包括,正确网址格式怎么写?  建站之星备案是否影响网站上线时间?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  定制建站策划方案_专业建站与网站建设方案一站式指南  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  高防服务器:AI智能防御DDoS攻击与数据安全保障  如何在万网主机上快速搭建网站?  如何快速搭建高效WAP手机网站吸引移动用户?  家庭建站与云服务器建站,如何选择更优?  建站10G流量真的够用吗?如何应对访问高峰?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  定制建站流程步骤详解:一站式方案设计与开发指南  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  西安专业网站制作公司有哪些,陕西省建行官方网站? 

您的项目需求

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