下载文件载入sd

来源:互联网 发布:h5麻将源码 编辑:程序博客网 时间:2024/04/30 00:38
<?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>

?

<?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> 

?

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;}}

?

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;}}

?

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);}        }}