我正在尝试将文件下载到目录,该目录可能因用户选择的目录而异。我将当前目录存储在文件对象中,现在尝试下载该文件。文件下载,但不下载指定的目录。那么,我该怎么做才能将文件放在所选目录中。
// 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);
名为url的String,传递给File构造函数,包含一个URL。只需使用它来检索该文件的名称。
更新: 我刚刚找到了这个文件。它在手机里不是SD卡。它位于此文件夹中,storage \ emulated \ 00。不知道为什么?另外,我得到的绝对路径是storage \ emulated \ 0。
答案 0 :(得分:1)
因此,我发现返回的路径始终是storage\emulated\0
,用于呼叫getExternalStorageDirectory().getPath())
到环境。这是我用来获取初始目录的内容。因此,例如,如果我浏览文件夹到“下载”文件夹,则路径为storage\emulated\0\Download
。当我下载文件而不是去实际的下载文件夹时,它会转到或创建存储文件夹中模拟文件夹中的下载文件夹。为了解决这个问题,我在路径中找到了零的索引,添加了1,并使用它得到了子串。之后它起作用了。另外,我必须在另一种浏览目录的方法中执行此操作。作为参数,我传入文件,然后在方法中我得到子字符串。在我用来下载文件的方法中,无论如何,我都会获得storage\emulated\0
。不知道为什么会这样做。如果有人能解释这一点,将不胜感激。
答案 1 :(得分:0)
root.getAbsolutePath()
是否返回末尾带有路径分隔符的字符串?
如果没有,那么您可能会执行类似bin/usr/var/appfilename.ext
而不是bin/usr/var/app/filename.ext
的操作,因为您将其直接连接到文件名。
答案 2 :(得分:0)
我在Android 7上仍然遇到此问题。在我的情况下,在重启设备之前,该文件不会显示。这是一个已知问题:https://issuetracker.google.com/issues/36956498