Android开发记录七之文件下载的功能实现
来源:互联网 发布:云计算数据中心建造 编辑:程序博客网 时间:2024/05/20 19:17
1.文件下载的步骤
用到的类有Uri和HttpURLConnection
首先必须创建一个HttpURLConnection对象,实现代码如下:
<span style="white-space:pre"></span>Uri url = new URL(urlStr);HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
从urlConn对象获取一个InputStream对象
代码如下:
InputStream inputStream = urlConn.getInputStream();在AndroidMainFest.xml文件中配置两个权限
一个是访问网络的权限,另外一个是访问SD卡的权限,用来存取文件
xml代码实现如下:
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
如果不配置则可能下载报错或者根本无法获取输入流
2.下载文本文件
编写了一个方法download,返回值是String类型,保存文本文件所有的内容。代码实现如下
public String download(String urlStr) {StringBuffer sb = new StringBuffer();//定义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 (Exception e) {e.printStackTrace();} finally {try {buffer.close();} catch (Exception e) {e.printStackTrace();}}return sb.toString();//返回字符串}3.下载其他文件并写到sd卡之中
首先定义文件下载的工具类FileUtils,这个类可以作为一个通用的工具类来调用。以后可以直接拿来用。
import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import android.os.Environment;public class FileUtils {private String SDPATH;public String getSDPATH() {return SDPATH;}public FileUtils() {//得到当前外部存储设备的目录// /SDCARDSDPATH = Environment.getExternalStorageDirectory() + "/";}/** * 在SD卡上创建文件 * * @throws IOException */public File creatSDFile(String fileName) throws IOException {File file = new File(SDPATH + fileName);file.createNewFile();return file;}/** * 在SD卡上创建目录 * * @param dirName */public File creatSDDir(String dirName) {File dir = new File(SDPATH + dirName);dir.mkdirs();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{creatSDDir(path);file = creatSDFile(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;}}实现方法定义如下:
public int downFile(String urlStr, String path, String fileName) {InputStream inputStream = null;try {FileUtils fileUtils = new FileUtils();if (fileUtils.isFileExist(path + fileName)) {return 1; //返回1代表文件已经存在} else {inputStream = getInputStreamFromUrl(urlStr);File resultFile = fileUtils.write2SDFromInput(path,fileName,inputStream); //传入的path格式为 xxx/,fileName格式 x.mp3if (resultFile == null) {return -1; //下载失败}}} catch (Exception e) {e.printStackTrace();return -1;} finally {try {inputStream.close();} catch (Exception e) {e.printStackTrace();}}return 0;//文件下载成功}/** * 根据URL得到输入流 */public InputStream getInputStreamFromUrl(String urlStr)throws MalformedURLException, IOException {url = new URL(urlStr);HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();InputStream inputStream = urlConn.getInputStream();return inputStream;}调用实例代码如下:
class DownloadTxtListener implements OnClickListener{@Overridepublic void onClick(View v) {HttpDownloader httpDownloader = new HttpDownloader();String lrc = httpDownloader.download("http://192.168.1.107:8080/voa1500/a1.lrc");System.out.println(lrc);} } class DownloadMp3Listener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubHttpDownloader httpDownloader = new HttpDownloader();int result = httpDownloader.downFile("http://192.168.1.107:8080/voa1500/a1.mp3", "voa/", "a1.mp3");System.out.println(result);} }
通过以上代码可以实现文件的下载
0 0
- Android开发记录七之文件下载的功能实现
- 我的学习之旅:android文件下载功能的实现
- 我的学习之旅:android文件下载功能的实现
- android开发之集成zxing,二维码,以及扫描二维码的功能实现。带源代码下载
- android实现文件下载功能的3种方法
- Android开发——下载功能的逻辑和实现
- Android开发之文件下载
- android 开发之文件下载
- Android开发之文件下载
- android 开发之文件下载
- Android开发之文件下载
- Android Webview实现文件下载功能
- Android Webview实现文件下载功能
- Android Webview实现文件下载功能
- 实现文件下载功能
- 实现文件下载功能
- Android开发学习之设置Android壁纸的功能实现
- JSP实现简单的文件下载功能
- curl多线程下载实现
- poj 1007
- 时间、延迟及延缓操作
- Best Time to Buy and Sell Stock III -- LeetCode
- CentOs 设置静态IP 方法
- Android开发记录七之文件下载的功能实现
- static与final
- Qsort 二级排序
- 第3部分:依赖注入DI
- 重载运算实例
- Java 访问控制修饰符
- machine随想
- java学习之三大流程控制
- c++静态对象