gpt4 book ai didi

java - DownloadManager 完成下载后无法移动文件

转载 作者:搜寻专家 更新时间:2023-11-01 07:57:35 27 4
gpt4 key购买 nike

在我的 Android 应用程序中,我使用系统下载管理器下载照片,收到照片后我会处理它,然后我需要将它移动到另一个位置。如果我只是复制它,它工作正常,如果我尝试移动它/删除它,我会得到一个关于它无法移动的异常。

Failed to delete original file '/data/user/0/com.android.providers.downloads/cache/a3133p2930-9.jpg' after copy to '/data/data/com.XXXXX.testharness/app_appdata/images/one/two/three/6/a3133p2930.jpg'

也尝试过:

1) 在尝试移动之前将其从下载管理器中删除2)直接将目标设置为目标目录,但出现错误我只能使用公共(public)外部文件夹。3) 尝试使用 JAVA renameTo 和 Apache commons moveFile

这是一个代码 fragment ,显示了我正在做的事情的相关部分。

有什么想法吗?

感谢

@Override
public void onReceive(Context context, Intent intent) {

String action = intent.getAction();
if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {


String uriString = c.getString(
c.getColumnIndex(
DownloadManager.COLUMN_LOCAL_URI));


String uri2String = c.getString(
c.getColumnIndex(
DownloadManager.COLUMN_URI));

String localFileString = c.getString(
c.getColumnIndex(
DownloadManager.COLUMN_LOCAL_FILENAME));

File from = new File(localFileString);
File to = new File(appDataDir, localString);
File to2 = new File (appDataDir, localString + "/" + getFileNameFromUrl(uri2String));


if (!to.exists()) {
if (to.mkdirs()) {
Log.d(LCAT, "Directory Created");
}
}
dm.remove(downloadId);

//boolean a = from.renameTo(to2);

try {
FileUtils.copyFile(from, to2);
} catch (Exception e) {
Log.d(LCAT, "rename success? " + e.getMessage());
}

最佳答案

我认为你不能删除 downloadmanager 的缓存,我认为它会在你从数据库中删除 downloadid 后自动清除,但如果你想控制你的文件,你可以设置目标文件夹到您的私有(private)外部存储,然后在下载完成后将其删除。

File rootDirectory = new File(getActivity().getExternalFilesDir(null).getAbsoluteFile().toString());
if(!rootDirectory.exists()){
rootDirectory.mkdirs();
}
req.setDestinationInExternalFilesDir(getActivity(),null ,"/" + fileName);

下载完成后,您可以像这样删除它:

 from.delete();

文档说:

public int remove (long... ids)

Cancel downloads and remove them fromthe download manager. Each download will be stopped if it was running,and it will no longer be accessible through the download manager. Ifthere is a downloaded file, partial or complete, it is deleted.

http://developer.android.com/reference/android/app/DownloadManager.html#remove%28long...%29

关于java - DownloadManager 完成下载后无法移动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25908272/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com