当前位置: 首页 > 知识库问答 >
问题:

在android中找不到下载管理器下载的文件

葛昱
2023-03-14

我正在尝试下载一个文件到目录,可以根据用户选择的任何目录变化。我将当前目录存储在一个file对象中,现在正在尝试下载该文件。文件下载,但它不下载指定的目录。那么,我可以做什么来获得所选目录中的文件。

// 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的字符串包含url。只是用它来检索文件名。

更新:我刚找到文件。它在手机里而不是sd卡里。它就在这个文件夹里,存储\仿真\00。不知道为什么?另外,我得到的绝对路径是Storage\emulated\0。

共有1个答案

燕照
2023-03-14

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

 类似资料:
  • 因此,在下载和打开文件之间的某个位置,我需要一个if语句来检查它是应该继续还是等待文件。

  • 我已经创建了一个webview,并向其中添加了下载监听器。当我在应用程序中下载文件时,它将文件存储在应用程序包中,而不是公共下载文件夹中。

  • 我对*nix操作系统不是很有经验,我正在尝试在WSL中建立一个嵌入式编程环境,但我对基本问题很感兴趣。上次我在这个项目上工作时,我下载了一些文件(cargo和rustup,但这不重要),我确认它们在那里,并通过使用-V获取版本号来工作。 重新启动计算机后,WSL无法将rustup或货物识别为命令,并且文件夹不会以ls显示,即使我在Windows资源管理器中检查它们时它们也会显示。 我一直在使用的目

  • 我使用下载管理器下载文件并安装它。 我很好奇,是否有一种方法可以在不从磁盘上删除文件的情况下将其从下载历史记录中删除? 据我所知,没有回调来判断用户是否安装了该文件,因此我希望将其保留在磁盘上,但仅从下载历史记录中删除它。 以下是我的下载代码: //创建下载管理器最终下载管理器。请求=新建下载管理器。请求(Uri.parse(appURL)); 还有一件事我很好奇,那就是我的广播接收器有必要吗?我

  • 文件名的开始是相同的,但结束是动态的,每次我点击下载时都会改变 我所做的: 你能帮忙吗

  • 控制从远程源的文件下载。 进程: 主进程​ DownloadItem(下载项)是一个在Electron中展示下载项的EventEmitter​ 它被用于 Session类中的 will-download事件,并允许用户控制下载项。 1 //主进程中 2 const {BrowserWindow} = require('electron') 3 let win = new BrowserWindow