MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0
1 . 使用http协议下载文件
// 步骤
A ) : 创建一个HttpURLConection对象
HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
B ) : 获取一个InputStream
urlConn.getInputStream();
C ) : 访问网络的权限
android.permission.INTERNET

例 :  1 . 声明控件对象(略)
2 . 获得控件对象(略)
3 . 绑定事件(略)
4 . 创建监听器对象

// 封装方法httpDownloader
Public class HttpDownloader {
Private URL url = null;

Public String download(String urlStr) {
StringBuffer sb = new StringBuffer();
String line = null;
BufferedReader buffer = null;

Try  {
// 创建一个URL对象
Url = new URL(urlStr);
// 创建一个Http连接
HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
// 使用IO流读取数据
Buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
While ((line = buffer.readline()) != null) {
Sb.append(line);
} catch (Execption e) {
e.printStackTrace();
} finally {
Try {
Buffer.close();
} catch (Execption e) {
e.printStackTrace();
}

Return db.ToString();
}
}

// 返回值  -1 . 下载文件出错  0 下载成功  1 文件已存在
Public int downFile(String urlStr , String path , String fileName) {
InputStream inputStream = null;

Try {
FileUtils fileUtils = new FileUtils();

If(fileUtils.isFileExists(path + fileName)) {
Return 1;
} else {
InputStream = getInputStreamFromUrl(urlStr);
File resultFile = fileUtils.write2SDFromInput(path , fileName , inputStream);
If(resultFile == null) {
Return -1;
}
}
} catch (Exception e) {
e.printStackTrace();
Return -1;
} finally {
Try {
inputStream.close();
} catch (Execption e) {
e.printStackTrace();
}
}
Return 0;
}

// 根据url得到输入流
Public InputStream getInputStreamFromUrl (String urlStr) 
Throws MalfromedURLExecption , IOExecption {
Url = new URL(urlStr);
HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
InputStream inputStream = urlConn.getInputStream();
Return inputStream;
}
}

Public void onClick(View v) {
HttpDownloader httpDownloader = new HttpDownloader();
String lrc = httpDownloader.download("http://192.168.0.1:8080/XXX.txt");
System.out.println(lrc);
}

2 . 将下载的文件写入SDCARD

访问SDCARD
// 得到当前设备sdka的目录
Environment.getExternalStorageDirectory();

// 访问SD卡的权限
Android.permission.WRITE_EXTERNAL_STORAGE

例 : // 一个完整的访问封装类

Public class FileUtils {
Private String SDPATH;

Public String getSDPATH() {
Return SDPATH;
}

Public FileUtils() {
SDPATH = Environment.getExternalStorageDirectory() + "/";
}

// 在SD卡上创建文件
Public File createSDFile(Stirng fileName) throws IOException {
File file = new File(SDPATH + fileName);
file.createNewFile();
Return file;
}

// 在SD卡上创建目录
Public File createSDDir(String dirName) {
File dir = new File(SDPATH + dirName);
Dir.mkdir();
Return dir;
}

// 判断SD卡上的文件夹是否存在
Public boolean isFileExist (String fileName) {
File file = new File(SDPATH + fileName);
Return file.exists();
}

// 将一个inputStream里面的数据写入到SD卡上
Public file write2SDFromInput(String path , string fileName , InputStream input) {

转载于:https://blog.51cto.com/apprentice/1360569

Android学习笔记--文件下载和SD卡的使用相关推荐

  1. android学习笔记之——获取SD卡及手机ROM容量

    继续android学习之旅,今天通过一个小例子,来获取SD卡的容量和手机ROM的容量,具体代码如下: package com.urovo.sdcardspace;import java.io.File ...

  2. Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)

    Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...

  3. Android学习笔记:Android基础知识点(不断更新中)

    1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...

  4. Android学习笔记-常用的一些源码,防止忘记了

    Android学习笔记-常用的一些源码,防止忘记了... 设置拨打电话 StringdialUri="tell:"+m_currentTelNumble; IntentcallIn ...

  5. Android学习笔记21:ImageView获取网络图片

    Android平台有3种网络接口可以使用,它们分别是:java.net.*(标准java接口).org.apache(Apache接口)和android.net.*(Android网络接口).本文将使 ...

  6. Android学习笔记(七):多个Activity和Intent

    根据www.mars-droid.com:Andriod开发视频教学,先跳过书本<Beginning Android 2>的几个章,我是这两个资源一起看,需要进行一下同步.先初步了解一下应 ...

  7. android文件缓存,并SD卡创建目录未能解决和bitmap内存溢出解决

    1.相关代码: 加入权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" ...

  8. Android学习笔记26:图片切换控件ImageSwitcher的使用

    在Windows操作系统中,要查看多张图片,可以通过使用"Windows照片查看器"在"上一张"和"下一张"之间切换,进行多张图片的浏览. ...

  9. Android学习笔记36:使用SQLite方式存储数据

    在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...

最新文章

  1. 参考框架 系统 基准_带有基准的前端框架的真实比较(2018更新)
  2. 3组现代软件工程第三次作业
  3. UE3 ExampleGame Android版无法运行解决方案
  4. nginx整合php+lua+oracle环境搭建
  5. spring beanFactory
  6. Dotnet Core IHttpClientFactory深度研究
  7. jboss eap 7_使用JBoss EAP 7的HTTP / 2
  8. linux2.4内核下载,升级到Linux 2.4内核
  9. Effective C++阅读笔记
  10. android手机apk动态替换桌面的logo和laber
  11. QQ 鼻祖立功!世界最大僵尸网络 Andromeda 为祸七年终被捣毁
  12. POJ 1384 Piggy-Bank 背包DP
  13. python基础教程-Python入门教程完整版(懂中文就能学会)
  14. 帆软已知年和第几周,算出7天日期如何写?
  15. resin mysql_nginx+resin+mysql实现session共享
  16. 【原创纯手打】VUE徒手搭各类脚手架详解
  17. 设置删除命令别名--用Enki学Linux系列(10)
  18. Hadoop集群塔建常见bug
  19. 2022学年第一学期郑州大学ACM招新赛选拔赛
  20. 8个方法让你游戏防封

热门文章

  1. PolarDB · 新品介绍 · 深入了解阿里云新一代产品 PolarDB
  2. 程序员编程知识经验总结
  3. 练习-CSS3 多栏(Multi-column)
  4. 算法-冒泡排序和快速排序
  5. 搭建MIPS平台GDB调试环境
  6. ALERT日志中常见监听错误:ORA-3136错误的排查
  7. POJ2488 A Knight's Journey(DFS)
  8. mongoDB 3.0 安全权限访问控制
  9. 初学Reporting Service2008
  10. html5经纬度定位 源码_HTML5教程 如何获取当前位置的经纬度