DownLoadManager遇到的问题

问题1


问题描述:使用DownLoadManager下载,设置好下载文件的存放路径。当我们根据这个路径去读取文件的时候,发现读不到这个文件。

例如:

设置文件的下载路径(Environment.DIRECTORY_DOWNLOADS):

request.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_DOWNLOADS,GetFileName(url));

设置文件的读取路径:File file =newFile(Environment.DIRECTORY_DOWNLOADS);

结果:读取不到已存在的文件。

造成读不到这个文件的原因是:文件下载后的存放路径与读取这个文件的路径不一致。

虽然我们看似写了同一个路径,但你所写的并不是绝对路径。这个路径的前面部分是不同的。接下来细细探讨下。

其实:

request.setDestinationInExternalFilesDir(x, URIForDM,x);这个方法的默认路径是

mnt/sdcard/Android/data/(packageName)/files+URIForDM

所以我们在使用File file =newFile(URIForDM);是不对的。

正确的读取路径是在设置的下载路径前加上默认的路径

完整的读取路径为:File file =newFile(mnt/sdcard/Android/data/(packageName)/files+URIForDM);


我在程序里面将默认的前部分路径获取写成如下:

Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+"Android"+File.separator+"data"+File.separator+context.getPackageName()+File.separator+"files";

这个路径加上你设置的URIForDM就可以获取DownLoadManager下载的文件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 说明本次redis集群安装在rhel6.8 64位机器上,redis版本为3.2.8,redis的gem文件版本为...
    读或写阅读 15,258评论 3 9
  • Android开发中,离不开对文件的操作。本文首先介绍了使用java对文件进行基本的读写操作,而后介绍了A...
    baolvlv阅读 12,094评论 0 5
  • 前言: 现在很多it公司都有做网络免费电话的意愿,而老牌开源项目Linphone遵从sip协议是很多猿们的首选,我...
    林天佐阅读 3,196评论 26 5
  • 考研单词150个 ✔ 考研课程 ✔ 为毛大家喜欢赶在饭点来拜年,而且客人已经吃过饭,(ಥ...
    MickeyMinnie阅读 120评论 0 0