String SDPATH = Environment.getExternalStorageDirectory() + "/";
String path = SDPATH + "files/";
/**
* 此文件支持下载docx,pdf,xls,jpg,
* @param urlStr
* @param path
* @param fileName
* @return
* -1:文件下载出错
* 0:文件下载成功
* 1:文件已经存在
*/
public int downFile(String urlStr, String path, String fileName) {
InputStream inputStream = null;
HttpURLConnection urlConn = null;
try {
// 判断文件是否存在
if (FileUtil.isFileExist(path + fileName)) {
System.out.println("====File==exits===");
return 1;
} else {
url = new URL(urlStr);
urlConn = (HttpURLConnection) url.openConnection();
// 设置请求方式为"GET"
urlConn.setRequestMethod("GET");
// 超时响应时间为5秒
urlConn.setConnectTimeout(5 * 1000); // 得到io输入流,即从url读取到的数据
inputStream = urlConn.getInputStream();
// 从input流中将文件写入SD卡中
File resultFile = FileUtil.write2SDFromInput(path, fileName, inputStream);
if (resultFile == null) {
return -1;
}
}
} catch (Exception e) {
e.printStackTrace();
return -1;
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return 0;
}
/**
* 将一个InputStream里面的数据写入到SD卡中
*
* @param path
* @param fileName
* @param input
* @return
*/
public static File write2SDFromInput(String path, String fileName, InputStream inputStream) {
File file = null;
OutputStream outputStream = null;
try {
// 创建文件,父目录若无,则会去先创建
file = createFile(path + fileName); // 开启输出流,准备写入文件
outputStream = new FileOutputStream(file);
// 缓冲区
byte[] buffer = new byte[FILESIZE];
int bytesRead = 0;
// 使用一个输入流从buffer里把数据读取出来
while ((bytesRead = inputStream.read(buffer)) != -1) {
// outputStream.write(buffer);
// 每次读多少,写多少进去,如果没有加bytesRead,则会出现随机将每一行后面的空数据也写入,造成一些文件格式的损坏和文件大小增大。
outputStream.write(buffer, 0, bytesRead);
}
// 关闭输入流
inputStream.close();
outputStream.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return file;
}

从网络上下载文件到sd卡上的更多相关文章

  1. Android下载文件到SD卡

    HttpURLConnection 上传方式: 尝试理解这两种流的区别: InputStreamReader 的读取方式: //创建一个URL对象 URL url = new URL(urlStrin ...

  2. android学习笔记47——读写SD卡上的文件

    读写SD卡上的文件 通过Context的openFileInput.openFileOutput来打开文件输入流.输出流时,程序打开的都是应用程序的数据文件夹里的文件,其存储的文件大小可能都比较有限- ...

  3. Android开发之SD卡上文件操作

    1. 得到存储设备的目录:/SDCARD(一般情况下) SDPATH=Environment.getExternalStorageDirectory()+"/"; 2. 判断SD卡 ...

  4. JWebFileTrans(JDownload): 一款可以从网络上下载文件的小程序(二)

    一  前言 本文是上一篇博客JWebFileTrans:一款可以从网络上下载文件的小程序(一)的续集.此篇博客主要在上一篇的基础上加入了断点续传的功能,用户在下载中途停止下载后,下次可以读取断点文件, ...

  5. JWebFileTrans(JDownload): 一款可以从网络上下载文件的小程序(三),多线程断点下载

    一 前言 本篇博客是<JWebFileTrans(JDownload):一款可以从网络上下载文件的小程序>系列博客的第三篇,本篇博客的内容主要是在前两篇的基础上增加多线程的功能.简言之,本 ...

  6. JDownload: 一款可以从网络上下载文件的小程序第四篇(整体架构描述)

    一 前言 时间过得真快,距离本系列博客第一篇的发布已经过去9个月了,本文是该系列的第四篇博客,将对JDownload做一个整体的描述与介绍.恩,先让笔者把记忆拉回到2017年年初,那会笔者在看Unix ...

  7. android 操作SD卡上的文件

    (1)说明:操作SD卡上的文件须要增加下面权限  在SD卡上创建和删除文件权限  <uses-permission android:name="android.permission.M ...

  8. Android SD卡上文件

    1. 得到存储设备的目录:/SDCARD(一般情况下) SDPATH=Environment.getExternalStorageDirectory()+"/"; 2. 判断SD卡 ...

  9. C# 中从网络上下载文件保存到本地文件

    下面是C#中常用的从Internet上下载文件保存到本地的一些方法,没有太多的技巧. 1.通过  WebClient  类下载文件 WebClient webClient = new WebClien ...

随机推荐

  1. uvm - dut

    module dut(clk, rst_n, rxd, rx_dv, txd, tx_en); input clk; input rst_n; :] rxd; input rx_dv; :] txd; ...

  2. About Sustainability

    我不喜欢人们常说"紧张感", "危机感".这只会让人觉得疲惫,无非是自己拿鞭子抽着自己,最终会觉得难以继续.那么快乐到底从哪里来?成就感到底从哪里来呢? 我更喜 ...

  3. 转一下大牛的嵌入web页播放视频方法(转)

    来自:http://www.cnblogs.com/bandry/archive/2006/10/11/526229.html 在Web页中嵌入Media Player的方法比较简单,只要用HTML中 ...

  4. 域名dns查询_查询域名dns ip地址

    最近有部分用户反应管理的天气网站打开偏慢,决定从每一个可以出现的问题点查起!首先就是dns! 通过360dns监控对比发现,同一组域名,15tianqi.cn的dns响应时间比较长,在300-700间 ...

  5. 使用angularJS遇见的一些问题的解决方案

    1. angularJS的$http.post请求,SpringMVC后台接收不到参数值的解决方案 问题一般为:400 Required String parameter 'rPassword' is ...

  6. 【如何快速的开发一个完整的iOS直播app】(采集篇)

    原文转自:袁峥Seemygo    感谢分享.自我学习 前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,首先需要采集主 ...

  7. JavaScript事件——冒泡、捕获

    本节要点:1.干预系统的事件处理机制 (一)DOM事件流 (二)停止事件冒泡 (三)阻止事件的默认行为 1.干预系统的事件处理机制 (一)DOM事件流 DOM模型是一个树形结构,在DOM模型中,HTM ...

  8. 关于安装sql2012出现的netfx3功能问题

    这个问题需要下载framework3.5即可继续正常安装,所以说低版本的framework也是有必要安装的

  9. System.Security.SecurityException The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception

    [15/08/19 00:03:10] [DataManager-7292-ERROR] System.Reflection.TargetInvocationException: Exception ...

  10. 特殊的ASCII码对应的字符

    Special Characters " " " quotation mark u+0022 ISOnum p:before { content:"\0022& ...