android 下載檔案類
下載檔案類
package com.editxml;import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader;import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient;public class HttpDownloader { private long downLoadFileSize = 0; public int m_DownSign = 0; public byte[] readStream(InputStream inputStream) throws Exception { ByteArrayOutputStream bout = new ByteArrayOutputStream(); StringBuilder sb = new StringBuilder(); BufferedReader reader = new BufferedReader(new InputStreamReader( inputStream, "gbk"), 8192); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } reader.close(); bout.close(); inputStream.close(); return sb.toString().getBytes(); } public int downFile(final String strUrl, final String strSavePath, final String strFileName) { m_DownSign = 0; new Thread() { public void run() { try { File fDir = new File(strSavePath); if (!fDir.exists()) { fDir.mkdir(); } // 下載檔案 HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(strUrl + strFileName); HttpResponse response; response = client.execute(get); HttpEntity entity = response.getEntity(); InputStream is = entity.getContent(); FileOutputStream fileOutputStream = null; if (is != null) { File file = new File(strSavePath, strFileName); fileOutputStream = new FileOutputStream(file);
byte[] buf = new byte[1024]; int ch = -1; while ((ch = is.read(buf)) != -1) { fileOutputStream.write(buf, 0, ch); downLoadFileSize += ch; } } fileOutputStream.flush(); if (fileOutputStream != null) { fileOutputStream.close(); } m_DownSign = 1; } catch (ClientProtocolException e) { e.printStackTrace(); m_DownSign = -1; } catch (IOException e) { e.printStackTrace(); m_DownSign = -1; } } }.start(); while (m_DownSign == 0) { try { Thread.sleep(100); continue; } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); m_DownSign = -1; break; } } return m_DownSign; }}
呼叫
File fDir = Environment.getExternalStorageDirectory(); if(fDir == null) { MsgShow("沒有發現儲存卡"); return; } HttpDownloader downloader = new HttpDownloader(); int iDownSign = downloader.downFile("http://192.168.3.35:80/", fDir + "/DownFile/", "xxxxxx.xml"); if(iDownSign == 1) { MsgShow("下載完成"); } else { MsgShow("下載失敗"); }