2016-04-15 8 views
2

Я переживаю, что DownloadManager не перезаписывает существующий файл, но создает новый файл, например. world-1.map вместо world.map.Скачайте DownloadManager, чтобы перезаписать существующий файл

Есть ли способ сообщить ему о замене существующего файла или обходного пути без необходимости добавлять новые привилегии или сотни строк кода?

+0

Если загрузка файла завершена, она создаст новый файл (если имя будет таким же, а затем добавит к нему номер). Если файл частично загружен, он возобновляет, где заканчивается. Тем не менее вы хотите переопределить файл, затем сначала пишете логику, чтобы проверить имя файла, а затем продолжить. – Kathi

ответ

1

Я немного поработал с DownloadManager. Я никогда не испытывал такого поведения, потому что каждый раз удалял файл, прежде чем перезагружать его. ли такое поведение происходит даже тогда, когда вы явно указать путь с одним из следующих способов:

setDestinationInExternalFilesDir()

setDestinationInExternalPublicDir()

Если вы не должны дать ему попробовать.

Если он не работает, вы можете удалить ранее загруженный контент, вам нужно сохранить идентификатор загрузки где-нибудь, чтобы удалить его. Таким образом:

downloadManager.remove(ids); 

И загрузите другой файл после этого.

+0

Я использую 'setDestinationInExternalPublicDir()' и испытываю поведение. Удаление старого файла не является хорошим вариантом, потому что при неудачной загрузке ничего не происходит. Было бы лучше иметь старый файл, чем ничего. Но я думаю о переименовании старого файла перед загрузкой нового. – hgoebl