准备:

package mars.utils;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;}}

封装:

package mars.utils;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.得到InputStram * 4.从InputStream当中读取数据 * @param urlStr * @return */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 (Exception e) {e.printStackTrace();} finally {try {buffer.close();} catch (Exception e) {e.printStackTrace();}}return sb.toString();}/** * 该函数返回整形 -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 (Exception e) {e.printStackTrace();}}return 0;}/** * 根据URL得到输入流 *  * @param urlStr * @return * @throws MalformedURLException * @throws IOException */public InputStream getInputStreamFromUrl(String urlStr)throws MalformedURLException, IOException {url = new URL(urlStr);HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();InputStream inputStream = urlConn.getInputStream();return inputStream;}}

测试:

package mars.download;import mars.utils.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 {    /** Called when the activity is first created. */    private Button downloadTxtButton;    private Button downloadMp3Button;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        downloadTxtButton = (Button)findViewById(R.id.downloadTxt);        downloadTxtButton.setOnClickListener(new DownloadTxtListener());        downloadMp3Button = (Button)findViewById(R.id.downloadMp3);        downloadMp3Button.setOnClickListener(new DownloadMp3Listener());    }        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);}        }    }

注意:要在AndroidMainfest.xml文件中加入访问网络和访问sd卡的权限加上!

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

更多相关文章

  1. Android获取SD卡视频音频文件
  2. 【Android】debug 状态下其签名文件 debug.keystore 相关(如何获
  3. Android 文件上传支持拍照录用录视频
  4. Android 的res/values/colors自定义颜色列表和注释表及布局文件
  5. Android 4.2 webview注入js对象时需要注意的问题
  6. android基础学习--->Android SharedPreferences存储对象和图片(An
  7. 新建android project和其配置文件的基本介绍
  8. Android使用adb命令直接修改文件
  9. CrossWalk - Android 动态加载so库文件

随机推荐

  1. 【Android Studio使用教程3】Android Stu
  2. Android(安卓)之 MediaPlayer类
  3. Android dumpsys input详解
  4. Android中LayoutParams总结和用法
  5. Android libv4l2-android 摄像头视频捕获
  6. 新书《Android/OPhone开发完全讲义》即将
  7. android selector的用法
  8. android模拟器操作
  9. 第一章 JAVA入门(什么是android)
  10. 浅谈使用tcpdump、wireshark对Android应