Android基于HttpUrlConnection類的文件下載實例代碼
更新時間:2017年09月01日 17:23:03 作者:何叫獸
本文通過實例代碼給大家介紹了Android基于HttpUrlConnection類的文件下載功能,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧
廢話不多說了,直接給大家貼代碼了,具體代碼如所示:
/**
* get方法的文件下載
* <p>
* 特別說明 android中的progressBar是google唯一的做了處理的可以在子線程中更新UI的控件
*
* @param path
*/
private void httpDown(final String path) {
new Thread() {
@Override
public void run() {
URL url;
HttpURLConnection connection;
try {
//統(tǒng)一資源
url = new URL(path);
//打開鏈接
connection = (HttpURLConnection) url.openConnection();
//設置鏈接超時
connection.setConnectTimeout(4000);
//設置允許得到服務器的輸入流,默認為true可以不用設置
connection.setDoInput(true);
//設置允許向服務器寫入數(shù)據(jù),一般get方法不會設置,大多用在post方法,默認為false
connection.setDoOutput(true);//此處只是為了方法說明
//設置請求方法
connection.setRequestMethod("GET");
//設置請求的字符編碼
connection.setRequestProperty("Charset", "utf-8");
//設置connection打開鏈接資源
connection.connect();
//得到鏈接地址中的file路徑
String urlFilePath = connection.getURL().getFile();
//得到url地址總文件名 file的separatorChar參數(shù)表示文件分離符
String fileName = urlFilePath.substring(urlFilePath.lastIndexOf(File.separatorChar) + 1);
//創(chuàng)建一個文件對象用于存儲下載的文件 此次的getFilesDir()方法只有在繼承至Context類的類中
// 可以直接調(diào)用其他類中必須通過Context對象才能調(diào)用,得到的是內(nèi)部存儲中此應用包名下的文件路徑
//如果使用外部存儲的話需要添加文件讀寫權(quán)限,5.0以上的系統(tǒng)需要動態(tài)獲取權(quán)限 此處不在不做過多說明。
File file = new File(getFilesDir(), fileName);
//創(chuàng)建一個文件輸出流
FileOutputStream outputStream = new FileOutputStream(file);
//得到鏈接的響應碼 200為成功
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
//得到服務器響應的輸入流
InputStream inputStream = connection.getInputStream();
//獲取請求的內(nèi)容總長度
int contentLength = connection.getContentLength();
//設置progressBar的Max
mPb.setMax(contentLength);
//創(chuàng)建緩沖輸入流對象,相對于inputStream效率要高一些
BufferedInputStream bfi = new BufferedInputStream(inputStream);
//此處的len表示每次循環(huán)讀取的內(nèi)容長度
int len;
//已經(jīng)讀取的總長度
int totle = 0;
//bytes是用于存儲每次讀取出來的內(nèi)容
byte[] bytes = new byte[1024];
while ((len = bfi.read(bytes)) != -1) {
//每次讀取完了都將len累加在totle里
totle += len;
//每次讀取的都更新一次progressBar
mPb.setProgress(totle);
//通過文件輸出流寫入從服務器中讀取的數(shù)據(jù)
outputStream.write(bytes, 0, len);
}
//關(guān)閉打開的流對象
outputStream.close();
inputStream.close();
bfi.close();
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "下載完成!", Toast.LENGTH_SHORT).show();
}
});
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
總結(jié)
以上所述是小編給大家介紹的Android基于HttpUrlConnection類的文件下載實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
您可能感興趣的文章:
- Android HttpURLConnection下載網(wǎng)絡圖片設置系統(tǒng)壁紙
- Android 用HttpURLConnection訪問網(wǎng)絡的方法
- Android網(wǎng)絡技術(shù)HttpURLConnection詳解
- Android程序開發(fā)通過HttpURLConnection上傳文件到服務器
- Android 中HttpURLConnection與HttpClient使用的簡單實例
- Android HttpURLConnection.getResponseCode()錯誤解決方法
- Android使用HttpURLConnection實現(xiàn)網(wǎng)絡訪問流程
相關(guān)文章
Android中操作SQLite數(shù)據(jù)庫快速入門教程
這篇文章主要介紹了Android中操作SQLite數(shù)據(jù)庫快速入門教程,本文講解了數(shù)據(jù)庫基礎(chǔ)概念、Android平臺下數(shù)據(jù)庫相關(guān)類、創(chuàng)建數(shù)據(jù)庫、向表格中添加數(shù)據(jù)、從表格中查詢記錄等內(nèi)容,需要的朋友可以參考下2015-03-03
Android自定義Drawable實現(xiàn)圓形和圓角
這篇文章主要為大家詳細介紹了Android自定義Drawable實現(xiàn)圓形和圓角,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09
android輸入框內(nèi)容改變的監(jiān)聽事件實例
下面小編就為大家分享一篇android輸入框內(nèi)容改變的監(jiān)聽事件實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02
Android自定義密碼樣式 黑點轉(zhuǎn)換成特殊字符
這篇文章主要為大家詳細介紹了Android自定義密碼樣式的制作方法,黑點換成¥、%等特殊字符,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
Android RecyclerView的卡頓問題的解決方法
本篇文章主要介紹了Android RecyclerView的卡頓問題的解決方法,具有一定的參考價值,有興趣的可以了解一下。2017-04-04

