我試圖使用Asynctask從URL下載文件。在doInBackground()方法中,我像這樣檢索文件大小。來自URL的文件大小與存儲器中的下載文件不相同
lenghtOfFile = conection.getContentLength();
這將返回一個整數值。現在,下載繼續,文件完全下載並寫入SD卡。
問題是,在我的postExecute()我想比較URL的文件大小和下載文件的大小。
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//check if the file was download and know how much of it
//was downloaded, so as to update ui accordingly
if(file.exists()){
Log.e("apiFileSize", String.valueOf(lenghtOfFile));
Log.e("downloadFileSize", String.valueOf(file.length()));
//check if the file was completely downloaded
if(lenghtOfFile == file.length()){
....
正如你可以看到我登錄這兩個值,但它們是不相等的,即使下載跑到自己的最終文件被完全下載。本地存儲(sdcard)中的文件最終大於url中的文件大小。我期望他們是平等的,爲什麼會發生這種情況?我能做什麼?
以下是日誌結果。
09-23 22:44:48.203 26594-26594/com.mobile.soullounge E/apiFileSize﹕ 1298573
09-23 22:44:48.204 26594-26594/com.mobile.soullounge E/downloadedFileSize﹕ 2696392
在此先感謝。
下面的答案適合您嗎?如果這麼小心接受? –