2012-08-13 115 views
2

我必須從FTP服務器下載一個大的壓縮文件(包含多個文件)。在下載過程中,如果用戶或網絡中斷/暫停,則應保存損壞的下載文件。之後,用戶可以從破壞的地方恢復下載相同的文件。如何在android下載大文件時處理中斷?

+1

問題在哪裏? – cjk 2012-08-13 10:29:23

+0

在標題我想。 :)。 Firefox在下載時保存文件。 IDM保存每個部分,然後在下載完成時進行確認。 – Shaiful 2012-08-13 10:30:39

+0

我需要android中的相同功能。 – Shafi 2012-08-13 10:58:22

回答

3

您可以使用DownloadManager類。

下載管理器是一個處理長時間運行的HTTP下載的系統服務。

檢查http://developer.android.com/reference/android/app/DownloadManager.html

以上,因爲API級別9

+0

即使關閉,我也想繼續下載。 – Shafi 2012-08-13 10:44:13

+0

是否即使應用程序已關閉,下載應該繼續嗎?或其他東西 – 2012-08-13 10:46:20

+0

雅..如果應用程序已關閉,應保存下載的文件,以後再恢復下載相同的文件,從中斷。 – Shafi 2012-08-13 10:52:22

0

一個可以設置字節的範圍內使用Range HTTP頭下載可用類。你所要做的就是記住你之前下載了多少個字節。 Apache的使用類別,它應該是這樣的:

DefaultHttpClient = new DefaultHttpClient(); 
HttpGet httpGet = new HttpGet(youSourceUri); 

// That's the important part. Count represents the number of bytes already downloaded. 
// We leave the range open, so it will download 'till the end of the file. 
httpGet.addHeader(new BasicHeader("Range", "bytes=" + count + "-")); 

HttpResponse response = httpClient.execute(httpGet); 
HttpEntity entity = response.getEntity(); 
InputStream inputStream = entity.getContent(); 

// Then read from the input stream 

記得添加適當的try/catch/finally語句安全地處理流,並確保它們關閉。爲了便於閱讀,這裏省略了它們。