簡體   English   中英

重命名使用下載管理器下載的文件時有時會失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM