Android 下载文件及写入SD卡,实例代码

Main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><Button  android:id="@+id/downloadTxt"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="下载文本文件"    /><Button  android:id="@+id/downloadMp3"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="下载MP3文件"    /></LinearLayout>


Androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="com.learning.example"      android:versionCode="1"      android:versionName="1.0">    <application android:icon="@drawable/icon" android:label="@string/app_name">        <activity android:name=".Download"                  android:label="@string/app_name">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>    <uses-sdk android:minSdkVersion="8" /><!-- 访问网络和操作SD卡 加入的两个权限配置--><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/></manifest> 


下载助手类httpdownloader

package com.learning.example.util;import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class HttpDownloader {private URL url = null; /** * 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文本当中的内容 * 1.创建一个URL对象 * 2.通过URL对象,创建一个HttpURLConnection对象 * 3.得到InputStream * 4.从InputStream当中读取数据 * @param urlStr * @return */public String download(String urlStr){StringBuffer sb = new StringBuffer();String line = null;BufferedReader buffer = null;try {url = new URL(urlStr);HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();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 (IOException e) {e.printStackTrace();}}return sb.toString();}/** *  * @param urlStr * @param path * @param fileName * @return  * -1:文件下载出错 *  0:文件下载成功 *  1:文件已经存在 */public int downFile(String urlStr, String path, String fileName){InputStream inputStream = null;try {FileUtils fileUtils = new FileUtils();if(fileUtils.isFileExist(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 (IOException e) {e.printStackTrace();}}return 0;}/** * 根据URL得到输入流 * @param urlStr * @return */public InputStream getInputStreamFromURL(String urlStr) {HttpURLConnection urlConn = null;InputStream inputStream = null;try {url = new URL(urlStr);urlConn = (HttpURLConnection)url.openConnection();inputStream = urlConn.getInputStream();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return inputStream;}}


文件操作类fileutils

package com.learning.example.util;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;private int FILESIZE = 4 * 1024; public String getSDPATH(){return SDPATH;}public FileUtils(){//得到当前外部存储设备的目录( /SDCARD )SDPATH = Environment.getExternalStorageDirectory() + "/";}/** * 在SD卡上创建文件 * @param fileName * @return * @throws IOException */public File createSDFile(String fileName) throws IOException{File file = new File(SDPATH + fileName);file.createNewFile();return file;}/** * 在SD卡上创建目录 * @param dirName * @return */public File createSDDir(String dirName){File dir = new File(SDPATH + dirName);dir.mkdir();return dir;}/** * 判断SD卡上的文件夹是否存在 * @param fileName * @return */public boolean isFileExist(String fileName){File file = new File(SDPATH + fileName);return file.exists();}/** * 将一个InputStream里面的数据写入到SD卡中 * @param path * @param fileName * @param input * @return */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[FILESIZE];while((input.read(buffer)) != -1){output.write(buffer);}output.flush();} catch (Exception e) {e.printStackTrace();}finally{try {output.close();} catch (IOException e) {e.printStackTrace();}}return file;}}


主程序类download

package com.learning.example;import com.learning.example.util.HttpDownloader;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class Download extends Activity {private Button downlaodTxtButton ;private Button downlaodMP3Button ;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        downlaodTxtButton = (Button)findViewById(R.id.downloadTxt);        downlaodTxtButton.setOnClickListener(new DownloadTxtListener());                downlaodMP3Button = (Button)findViewById(R.id.downloadMp3);        downlaodMP3Button.setOnClickListener(new DownloadMP3Listener());    }        class DownloadTxtListener implements OnClickListener{@Overridepublic void onClick(View v) {HttpDownloader downloader = new HttpDownloader();String lrc = downloader.download("http://172.16.11.9:8080/test/1.lrc");System.out.println(lrc);}        }        class DownloadMP3Listener implements OnClickListener{@Overridepublic void onClick(View v) {HttpDownloader downloader = new HttpDownloader();int result = downloader.downFile("http://172.16.11.9:8080/test/1.mp3", "voa/", "1.map3");System.out.println(result);}        }}


更多相关文章

  1. android 播放Raw文件夹下的音乐文件
  2. Android(安卓)2.3 编译
  3. Android(安卓)关于wifi管理的代码
  4. android Fragment
  5. android之纵横屏幕切换时保存数据
  6. android 让 webview 支持HTML中的
  7. 【android开发】android操作文件
  8. 类和 Json对象
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android NDK下载:Download Android 1.5 ND
  2. Android(安卓)悬浮窗 (附圆形菜单悬浮窗)
  3. Android 进度条
  4. How Android Draws Views
  5. android图片放大 缩小 旋转
  6. Layout1.9
  7. Android usb 驱动
  8. Android 查看本机外网IP
  9. AndroidMenifest.xml(Android清单文件)内
  10. Android调用摄像头闪退