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

简介:

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) {
File file = null;
OutputStream output = null;
Try {
createSDDir(path);
File = createSDFile(path + fileName);
Output = new FileOutPutStream(file);
Byte buffer [] = new byte [4 * 1024]; 
While ((input.read(buffer)) != -1) {
Output.write(buffer);
}
Output.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
Try {
Output.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Return file;
}
}

最后在AndroidManifest,xml中加入标签

<user-permission android:name="android.permission. WRITE_EXTERNAL_STORAGE" />




     本文转自My_King1 51CTO博客,原文链接:http://blog.51cto.com/apprentice/1360569,如需转载请自行联系原作者



相关文章
|
8天前
|
监控 Java API
Android经典实战之OkDownload:一个经典强大的文件下载开源库,支持断点续传
本文介绍的 OkDownload 是一个专为 Android 设计的开源下载框架,支持多线程下载、断点续传和任务队列管理等功能,具备可靠性、灵活性和高性能特点。它提供了多种配置选项和监听器,便于开发者集成和扩展。尽管已多年未更新,但依然适用于大多数文件下载需求。
50 1
|
4月前
|
架构师 网络协议 算法
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
|
4月前
|
消息中间件 缓存 架构师
2024年阿里Android高级面试题分享,附学习笔记+面试整理+进阶书籍
2024年阿里Android高级面试题分享,附学习笔记+面试整理+进阶书籍
|
12月前
|
网络协议 开发工具 Android开发
​​Android平台GB28181历史视音频文件下载规范探讨及技术实现
​​Android平台GB28181历史视音频文件下载规范探讨及技术实现
150 1
|
11月前
|
缓存 安全 数据库
Android学习笔记4
Android学习笔记4
43 0
|
11月前
|
XML 数据库 数据安全/隐私保护
Android学习笔记3
Android学习笔记3
145 0
|
11月前
|
XML Java Android开发
Android学习笔记2
Android学习笔记2
64 0
|
11月前
|
XML Java Linux
Android学习笔记1
Android学习笔记1
40 0
|
存储 Java API
Android逆向 | 基础篇 - Java 学习笔记03
Android逆向 | 基础篇 - Java 学习笔记03
|
Java 编译器 Android开发
Android逆向 | 基础篇 - Java 学习笔记02
Android逆向 | 基础篇 - Java 学习笔记02