2011-06-21 150 views
1

從我的程序中的URL下載文件時,我有一個奇怪的事情。 我通過檢查設備和服務器上相同文件的大小來檢查服務器上文件的可用更新。當我使用URLConnection類的getContentLength方法時,我得到一個大小,然後我下載並檢查下載的字節大小獲取下載並獲得相同的大小。但是當我查看SDCard上的文件大小時,它們大約是1.4倍。爲什麼會發生? 所以,基本上我下載一個大小,並獲得不同的SDCard,這就是爲什麼我不能通過詢問服務器來檢查它們是否被更新。 URL是HTTPS類型,文件的.icsAndroid下載的文件大小大於下載大小

回答

0

已解決。問題在於編碼。我必須使用帶有secon參數「UTF8」的OutputStreamWriter。這也解決了與文本中的Cyrylic字母的問題。

0

這是可能的,它是由於文件系統開銷。我假設你正在寫一個FAT32 SD卡,在這種情況下,在某些情況下可能會有很大的開銷。

根據維基百科(http://en.wikipedia.org/wiki/File_Allocation_Table):

「不過請注意,該文件以簇爲單位分配的,所以如果一個1 KB的文件駐留在一個32 kB的簇,31 kB被浪費了。「

請考慮嘗試使用大文件或不同大小的文件(如果可能的話),並查看期望值與實際值的比率是否保持不變。

+0

我下載大小不同的5個文件,每一個都有(卡空間)/(下載大小)值不同,但它永遠不會小於1.1,超過2,但我想你對文件系統的開銷想法可能是恰到好處,因爲這些文件最大爲110 KB。謝謝。 – eoloe