在安卓系统中,下载管理器下载的文件找不到了

5

我正在尝试下载文件到不同的目录,这取决于用户选择的目录。我将当前目录存储在文件对象中,现在正在尝试下载该文件。虽然文件已经下载完成,但它并没有下载到指定的目录。那么,我应该怎么做才能把文件下载到所选的目录呢?

// Getting path to store the file   
String path = root.getAbsolutePath();   
path += curr.getName();   
request.setDestinationInExternalPublicDir(path, new File(url).getName());    
// get download service and enqueue file   
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);     
manager.enqueue(request);   

传递给File构造函数的名为url的字符串包含一个URL,只需使用它来检索文件名。

更新:我刚刚找到了该文件。它存储在手机中而不是SD卡中。它在此文件夹中:storage\ emulated \ 00。不确定为什么?另外,我得到的绝对路径是storage\ emulated \ 0。


1
它正在哪里下载? - Corey Ogburn
@CoreyOgburn 我不知道。我搜索了整个SD卡,但是找不到它。文件已经下载了。当我打开通知抽屉时,我可以打开它。但是在我清除通知抽屉后,文件就丢失了。 - thad
@CoreyOgburn,我刚找到那个文件。它在手机里而不是SD卡里。它在这个文件夹里:storage\emulated\00。 - thad
3个回答

1
所以,我发现调用环境中的getExternalStorageDirectory().getPath()方法始终返回路径storage\emulated\0。这是我使用的初始目录。例如,如果我通过文件夹导航至下载文件夹,则路径为storage\emulated\0\Download。然而,在下载文件时,它会跳转到或创建emulated文件夹下的downloads文件夹,而不是实际的downloads文件夹。为了解决这个问题,我找到了路径中零的索引,加1并获取了从该位置开始的子字符串。此后就可以正常工作了。还有一种情况需要在另一个方法中浏览目录。作为参数,我传递了文件,然后在方法内部获取了子字符串。但在下载文件的方法中,无论什么情况下都会得到storage\emulated\0。不确定为什么会这样。如果有人能解释一下,那将不胜感激。

0

root.getAbsolutePath()返回的字符串末尾是否带有路径分隔符字符?

如果不是,那么你可能会像这样做:bin/usr/var/appfilename.ext而不是bin/usr/var/app/filename.ext,因为你直接将它连接到文件名中。


我甚至没有得到bin/usr/var/app/作为路径。我得到的是storage\emulated\0。不确定原因。它找到了实际路径,并允许我浏览文件夹,在我使用的其他代码中找到正确的路径和名称。 - thad

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接