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。

4

3 回答 3

1

所以,我发现返回的路径总是storage\emulated\0用于调用getExternalStorageDirectory().getPath())环境。这是我用来获取初始目录的。因此,例如,如果我浏览文件夹到 Downloads 文件夹,路径将是storage\emulated\0\Download. 当我下载文件时,它不会转到实际的下载文件夹,而是转到或创建存储文件夹中模拟文件夹中的下载文件夹。为了解决这个问题,我在路径中找到了零的索引,添加了 1,并使用它获取了子字符串。之后它起作用了。此外,我必须以另一种方法在目录中导航。作为参数,我传入文件,然后在方法中获取子字符串。在我用来下载我得到的文件的方法中storage\emulated\0无论。不知道为什么会这样。如果有人能解释这一点,将不胜感激。

于 2013-12-12T23:46:30.157 回答
0

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

如果不是,那么您可能正在做类似bin/usr/var/appfilename.ext而不是的事情bin/usr/var/app/filename.ext,因为您将它直接连接到文件名中。

于 2013-12-12T22:33:39.387 回答
0

我在 Android 7 上仍然遇到这个问题。在我的情况下,文件不会显示,直到我重新启动设备。这是一个已知问题:https ://issuetracker.google.com/issues/36956498

来源:https ://stackoverflow.com/a/20413888/2552811

于 2017-06-25T15:45:25.030 回答