[英]renameTo fail sometimes when renaming file downloaded using Download Manager
我正在使用下載管理器下載文件。 如果已經下載了文件,則下載管理器在文件名之前附加“ -1”。 現在,我想使用原始文件刪除舊文件,然后嘗試重命名新文件。 我是在下載文件后執行此操作的,這樣在下載新文件之前不會刪除舊文件。 下面是我一直在使用的代碼。
final File NewFile = new File(FileDirectory, FileNameWithoutExtension + "_" + DateMillis);
DownloadManager.Request request = new DownloadManager.Request(FileUri);
request.setDescription("Test Description");
request.setTitle("Download");
request.setAllowedOverRoaming(false);
request.setDestinationInExternalPublicDir("/MyFiles", FileNameWithoutExtension + "_" + DateMillis);
以下是廣播接收器的代碼。 我沒有把所有的代碼。 只是onReceive方法中的重要代碼行。
String uriString = c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
File LatestFileDownloaded = new File(uriString);
String tmpName = uri.getLastPathSegment();
// Here I am deleting all the extra files with the same name but different appended letters
File[] extraFiles = FileDirectory.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().contains(FileNameWithoutExtension + "_");
}
});
if (extraFiles != null) {
for (File extraFile : extraFiles) {
if (!extraFile.getName().equals(tmpName)) {
extraFile.delete();
}
}
}
在這里重命名文件的代碼,
if (!LatestFileDownloaded .getName().equals(FileNameWithoutExtension + "_" + NodeDateMillis)) {
LatestFileDownloaded.renameTo(NewFile );
LatestFileDownloaded.delete();
}
因此,例如,如果存在文件MyFile_1410642204000(無任何擴展名)並且下載管理器下載了新文件,則新文件將以名稱MyFile_1410642204000-1保存。 現在,MyFile_1410642204000-1應該重命名為MyFile_1410642204000,而舊文件MyFile_1410642204000-1應該刪除,但不是。 因此在SDCard上存在MyFile_1410642204000-1。
請檢查代碼,為什么不重命名文件以及我的代碼出了什么問題。 謝謝
我想我已經解決了問題,因為文件現在每次都成功重命名了。 我不確定100%這是導致文件無法重命名的唯一問題。 來自Download Manager的文件Uri就是這樣,
/file://storage/emulated/0/MyFiles/
我為文件創建的路徑沒有file:/前綴,
/storage/emulated/0/MyFiles/
我剛剛從Uri中刪除了“ / file:/”,文件已成功重命名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.