2011-06-21 149 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