2016-04-15 2 views
2

Ich habe festgestellt, dass DownloadManager eine vorhandene Datei nicht überschreibt, sondern eine neue Datei erstellt, z. world-1.map statt nur world.map.Tell DownloadManager zum Überschreiben vorhandener Datei

Gibt es eine Möglichkeit, ihm zu sagen, eine vorhandene Datei oder eine Problemumgehung zu überschreiben, ohne neue Berechtigungen oder Hunderte von Codezeilen hinzufügen zu müssen?

+0

Wenn der Dateidownload abgeschlossen ist, wird eine neue Datei erstellt (wenn der Name gleich ist, fügen Sie eine Nummer hinzu). Wenn die Datei teilweise heruntergeladen wird, wird sie fortgesetzt, wo sie endet. Wenn Sie die Datei dennoch überschreiben möchten, schreiben Sie zuerst eine Logik, um den Dateinamen zu überprüfen und dann fortzufahren. – Kathi

Antwort

1

Ich habe ein wenig mit der DownloadManager gearbeitet, ich habe dieses Verhalten noch nie erlebt, weil ich die Datei jedes Mal vor dem erneuten Download gelöscht habe. Ist dieses Verhalten auftreten, selbst wenn Sie explizit den Pfad mit einer der folgenden Methoden an:

setDestinationInExternalFilesDir()

setDestinationInExternalPublicDir()

Wenn nicht Sie es versuchen sollte.

Wenn es nicht funktioniert, können Sie den zuvor heruntergeladenen Inhalt löschen, müssen Sie die ID des Downloads irgendwo speichern, um es löschen zu können. Auf diese Weise:

downloadManager.remove(ids); 

Und laden Sie die andere Datei danach.

+0

Ich benutze 'setDestinationInExternalPublicDir()' und erfahre das Verhalten. Das Löschen der alten Datei ist keine gute Option, denn wenn der Download fehlschlägt, gibt es nichts. Es wäre besser, die alte Datei als nichts zu haben. Aber ich denke darüber nach, die alte Datei umzubenennen, bevor ich die neue herunterlade. – hgoebl