2016-10-24 15 views
0

Ich möchte überprüfen, ob die Datei bereits in Download-Ordner in Android vorhanden ist. Ich verwende Android Download Manager, um die Datei herunterzuladen. In dort if Abschnitt funktioniert nicht. Wenn die Datei bereits vorhanden ist (Beispiel: Dateiname - songname.mp3), wird beim Herunterladen der gleichen Datei zum zweiten Mal die Datei als songname1.mp3 heruntergeladen. Ich habe den folgenden Code ausprobiert. Ich möchte eine Nachricht anzeigen, wenn die Datei bereits vorhanden ist.Überprüfen Sie, ob die Datei bereits existiert Android funktioniert nicht

Bitte helfen Sie mir, dieses Problem zu beheben.

public void DownloadChecker() { 
    File applictionFile = new File(Environment.getExternalStoragePublicDirectory(
     Environment.DIRECTORY_DOWNLOADS)+ "/"+"mysongs.mp3"); 

    if(applictionFile.exists()) { 
     Toast.makeText(getApplicationContext(), "File Already Exists", 
      Toast.LENGTH_LONG).show(); 
    } else { 
     String servicestring = Context.DOWNLOAD_SERVICE; 
     DownloadManager downloadmanager; 
     downloadmanager = (DownloadManager) getSystemService(servicestring); 
     Uri uri = Uri.parse(DownloadUrl); 
     DownloadManager.Request request = new DownloadManager.Request(uri); 
     request.setDestinationInExternalFilesDir(MainActivity.this, 
      Environment.DIRECTORY_DOWNLOADS,"mysongs.mp3"); 

     Long reference = downloadmanager.enqueue(request); 
    } 
} 
+0

haben Sie hinzugefügt 'Speicher gelesen permission'? – Sanjeet

+0

@ sanjeetkumarSingh- Ja. Bereits hinzugefügt, um die folgenden Berechtigungen < uses-permission android: name = "android.permission.READ_EXTERNAL_STORAGE" /> venura

Antwort

1

sollten Sie wahrscheinlich zu ändern versuchen:

File applictionFile = new File(Environment. 
     getExternalStoragePublicDirectory(Environment 
       .DIRECTORY_DOWNLOADS)+ "/"+"mysongs.mp3"); 

zu:

File applictionFile = new File(Environment. 
     getExternalStoragePublicDirectory(Environment 
       .DIRECTORY_DOWNLOADS).getAbsolutePath() + "/" + "mysongs.mp3"); 
+0

Sie brauchen nicht einmal das"/"in der Mitte. Ersetzen Sie es durch "," und der Dateiname wird der zweite Parameter sein. Genau wie der Post des OPs in der 'else'-Anweisung zeigt –

+0

Ja, Sie können sich definitiv dafür entscheiden, aber mein Ziel ist es, minimale Änderungen zu zeigen, die sich auf das eigentliche Problem konzentrieren, nur um Missverständnisse beim Leser zu vermeiden. –

+0

Natürlich verstehe ich. Ich habe das OP nur informiert. Ich wollte keine neue Antwort für diese kleine Änderung posten, seit ich deine Antwort gesehen habe :) –

1

auf dem Testgerät testen Sie Ihre Anwendung? Ist es über api-23, dann sollten Sie die Erlaubnis zur Laufzeit einstellen müssen! oder aber versuchen, diese

File extStore = Environment.getExternalStorageDirectory(); 
File myFile = new File(extStore.getAbsolutePath() + "/mysongs.mp3"); 

if(myFile.exists()){ 
    Toast.makeText(getApplicationContext(), "File Already Exists", 
     Toast.LENGTH_LONG).show(); 
} 
+0

Vielen Dank @Radhey – venura

1

Änderung

if(applictionFile.exists()) { 
     Toast.makeText(getApplicationContext(), "File Already Exists", 
      Toast.LENGTH_LONG).show(); 
    } 

zu

if(applictionFile.canRead()) { 
     Toast.makeText(getApplicationContext(), "File Already Exists", 
      Toast.LENGTH_LONG).show(); 
    } 

oder

if(applictionFile.isFile()) { 
     Toast.makeText(getApplicationContext(), "File Already Exists", 
      Toast.LENGTH_LONG).show(); 
    } 
Versuchen 0
+0

Vielen Dank @Emdad Hossain – venura

1

in einfacher Weise

File f = new File(filePathString); 
if(f.exists() && !f.isDirectory()) { 
    // do your code stuff 
} 
+0

Vielen Dank Aditya – venura

Verwandte Themen