Android学习笔记--文件下载和SD卡的使用
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卡的使用相关推荐
- android学习笔记之——获取SD卡及手机ROM容量
继续android学习之旅,今天通过一个小例子,来获取SD卡的容量和手机ROM的容量,具体代码如下: package com.urovo.sdcardspace;import java.io.File ...
- Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)
Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...
- Android学习笔记:Android基础知识点(不断更新中)
1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...
- Android学习笔记-常用的一些源码,防止忘记了
Android学习笔记-常用的一些源码,防止忘记了... 设置拨打电话 StringdialUri="tell:"+m_currentTelNumble; IntentcallIn ...
- Android学习笔记21:ImageView获取网络图片
Android平台有3种网络接口可以使用,它们分别是:java.net.*(标准java接口).org.apache(Apache接口)和android.net.*(Android网络接口).本文将使 ...
- Android学习笔记(七):多个Activity和Intent
根据www.mars-droid.com:Andriod开发视频教学,先跳过书本<Beginning Android 2>的几个章,我是这两个资源一起看,需要进行一下同步.先初步了解一下应 ...
- android文件缓存,并SD卡创建目录未能解决和bitmap内存溢出解决
1.相关代码: 加入权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" ...
- Android学习笔记26:图片切换控件ImageSwitcher的使用
在Windows操作系统中,要查看多张图片,可以通过使用"Windows照片查看器"在"上一张"和"下一张"之间切换,进行多张图片的浏览. ...
- Android学习笔记36:使用SQLite方式存储数据
在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...
最新文章
- 参考框架 系统 基准_带有基准的前端框架的真实比较(2018更新)
- 3组现代软件工程第三次作业
- UE3 ExampleGame Android版无法运行解决方案
- nginx整合php+lua+oracle环境搭建
- spring beanFactory
- Dotnet Core IHttpClientFactory深度研究
- jboss eap 7_使用JBoss EAP 7的HTTP / 2
- linux2.4内核下载,升级到Linux 2.4内核
- Effective C++阅读笔记
- android手机apk动态替换桌面的logo和laber
- QQ 鼻祖立功!世界最大僵尸网络 Andromeda 为祸七年终被捣毁
- POJ 1384 Piggy-Bank 背包DP
- python基础教程-Python入门教程完整版(懂中文就能学会)
- 帆软已知年和第几周,算出7天日期如何写?
- resin mysql_nginx+resin+mysql实现session共享
- 【原创纯手打】VUE徒手搭各类脚手架详解
- 设置删除命令别名--用Enki学Linux系列(10)
- Hadoop集群塔建常见bug
- 2022学年第一学期郑州大学ACM招新赛选拔赛
- 8个方法让你游戏防封