android 开发之文件下载

Android作为一个手机操作系统,在Android中访问网络是许多应用程序都必需的功能。用户也经常需要在应用程序中下载所需要的文件比如电子书,MP3格式的音乐文件,电影等。

Android文件下载的一般步骤:

1、创建一个HttpURLConnection的对象

URL url=new URL(urlStr);

HtttpURLConnection urlConn=(HtttpURLConnection)url.OpenConnection();

2、获取一个InputStream输入流对象

urlConn.getInputStream();

3、在AndroidManifest.xml中添加网络访问权限

<uses-permission android:name="android.permission.INTERNET"/>

4、在AndroidManifest.xml中加入访问SDCard的权限

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

5、创建文件流FileOutputStream,将从InputStream读出的数据写入到FileOutputStream。

需要注意的是在Android3.0之前的Android平台上可以直接Activity所在的线程中访问网络,下载网络上的文件。但是这样的话,如果下载的文件较大,或者网速比较慢的情况下,Activity界面就会处于无法及时响应用户操作的状态。Android3.0中如果在Activity所在的线程访问网络,调试执行时会出现异常信息:“android.os.NetworkOnMainThreadException”,无法获取有效的HttpURLConnection对象。所以我们需要把访问网络,,下载文件的操作放在另外的线程中。

示例:

新建一个Android应用程序项目。在main.xml总添加两个Button:buttontxt、buttonmp3。点击分别下载txt和mp3文件。下载的txt文件直接将txt文本文件的内容直接输出到控制台。mp3文件保存到虚拟结的SD卡目录下的Android文件夹中。为了下载方便,项目中下载的a.txt和music.mp3文件均放在本机安装的tomcat服务器上webapps目录下的Android文件夹中。

main.xml

copy to clipboard

Android_Download.java

copy to clipboard

package idea.org; import android.app.Activity;import android.os.Bundle; import android.view.View;import android.view.View.OnClickListener;import android.widget.Button; Android_Downloadprivate Button buttonmp3;/** Called when the activity is first created. */ onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);buttontxt.setOnClickListener(new OnClickListener(){/* (non-Javadoc) * @see android.view.View.OnClickListener#onClick(android.view.View) onClick(View v) {// TODO Auto-generated method stub//创建一个匿名线程用于下载文件 run(){ HttpDownloader httpDownloader=new HttpDownloader();//调用httpDownloader对象的重载方法download下载txt文件String txt=httpDownloader.download(":8080/Android/a.txt");buttonmp3.setOnClickListener(new OnClickListener()* @see android.view.View.OnClickListener#onClick(android.view.View) onClick(View v) {// TODO Auto-generated method stub run()HttpDownloader httpDownloader=new HttpDownloader();//调用httpDownloader对象的重载方法download下载mp3文件);System.out.println(result); } catch(Exception e)

HttpDownloader.java

copy to clipboard

package idea.org; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream;import java.io.InputStreamReader; import java.net.HttpURLConnection; HttpDownloader {;public String download(String urlStr){ StringBuffer stringbuffer=new StringBuffer();String line; BufferedReader bufferReader=null;url=new URL(urlStr); //得到一个HttpURLConnection对象HttpURLConnection httpUrlConnection=(HttpURLConnection) url.openConnection(); InputStreamReader(httpUrlConnection.getInputStream()));)catch(Exception e) return stringbuffer.toString(); download(String urlStr,String path,String fileName){ InputStream inputstream=null;FileUtils fileUtils=new FileUtils();if(fileUtils.isExist(path+fileName));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace(); } File file=fileUtils.writeToSDPATHFromInput(path, fileName, inputstream););;public InputStream getFromUrl(String urlStr)HttpURLConnection httpUrlConnection=(HttpURLConnection) url.openConnection();InputStream input=httpUrlConnection.getInputStream();

FileUtils.java

人生就是一次充满未知的旅行,在乎的是沿途的风景,

android 开发之文件下载

相关文章:

你感兴趣的文章:

标签云: