Filedownloader: 能否实现下载时不用空文件占位置,下载了多少字节,文件就是多大

Created on 14 Sep 2016  ·  9Comments  ·  Source: lingochamp/FileDownloader

现在使用时发现在下载一开始,就会使用一个和下载文件大小一样的空文件去占位,我现在不需要占位,希望下载文件的大小根据已下载大小逐渐增大这样的,我这块需要对下载的文件进行解码,如果使用空文件占位的话,下载过程中后边未下载的部分解码后就是乱的,这块我并不需要获取已下载文件大小,只是希望文件大小是随已下载字节实时变化的

enhancement question

All 9 comments

这个是挺久之前添加的一个feature,是未了防止下载过程中空间不足的情况。


考虑到你这种需要下载过程中动态解码的情况,我会在 1.2.0版本中在 filedownloader.properties 中添加一个配置项: file.non-pre-allocation 参数,配置为 true时,将不会进行预分配整个文件的大小。

好的,非常感谢,1.2.0大概什么时候出?

大约在9月26日。你可以关注这个 1.2.0-Milestone

如果你紧急,可以自己先修改下 FileDownloadRunnable#pre-alloc 这个 outFd.setLength(totalBytes); 删除了即可。

是很紧急,按照你的方法已经解决了,谢谢你:-)

对了,还想起一个事情,能否在1.2.0中增加一个配置以取消下载的临时文件的后缀.temp?

这个牵扯的事情很多。主要考量点是如何判定一个文件是否有下载完成,.temp就是用最轻量、最干净的方式解决了这个问题。

早期没有 .temp文件的时候本地需要将下载完成的数据存储在数据库中以便于判定该文件是否已经下载完成。

如果你由于业务特殊关系希望不要.temp后缀,可以自行修改:

  1. 不使用pre-alloc
  2. 在1的前提下,在判定文件是否是已经下载完成,通过content-length是否与文件大小相等,这里就需要记录content-length在本地数据库或者哪些地方。因为这个是在发起请求之前,得到结论以后才开始请求与下载。

OK,我自己处理吧

👍 恩。

Was this page helpful?
0 / 5 - 0 ratings