2013-02-06 22 views
5

enter image description here Ich implementiere eine Anwendung, die Dateien im externen Speicher generiert und erstellt. Kannst du mir helfen, wie können wir das entfernen?Android: Wie entferne ich Dateien aus dem externen Speicher?

Danke, Chandra

Bearbeiten-1: ich folgenden Code hinzugefügt und immer noch das gleiche Problem, das ich bin immer, haben Sie einen Blick auf mein Code unten,

String fullPath = "/mnt/sdcard/"; 
       System.out.println(fullPath); 
       try 
       { 
        File file = new File(fullPath, "audio.mp3"); 
        if(file.exists()) 
        { 

         boolean result = file.delete(); 
         System.out.println("Application able to delete the file and result is: " + result); 
         // file.delete(); 
        } 
        else 
        { 
         System.out.println("Application doesn't able to delete the file"); 
        } 
       } 
       catch (Exception e) 
       { 
        Log.e("App", "Exception while deleting file " + e.getMessage()); 
       } 

In der LogCat Ich bekomme Anwendung in der Lage, die Datei zu löschen und das Ergebnis lautet: false. Ich habe meinen Screenshot angeschlossen, nachdem ich das ausgeführt habe. Bitte sehen Sie sich das an. Und schlage mich vor.

Antwort

9
File file = new File(selectedFilePath); 
boolean deleted = file.delete(); 

wo selectedFilePath ist der Pfad der Datei, die Sie löschen möchten - zum Beispiel:

/sdcard/YourCustomDirectory/ExampleFile.mp3 
+0

, wenn Ihre Datei in externer herausnehmbaren Speicher (SD-Karte) ist, Sie Documentfile und Speicherzugriffsrahmen statt für die Version verwenden, sollten> = kitkat – HendraWD

1
File file = new File(selectedFilePath); 
boolean deleted = file.delete(); 

Weg wäre so etwas wie: /mnt/Pictures/SampleImage.png

1
public void deleteOnExit() 

Spiel dieser Datei automatisch gelöscht werden, wenn die VM normal beendet.

Beachten Sie, dass der Anwendungslebenszyklus unter Android keine VM-Beendigung enthält. Daher wird durch den Aufruf dieser Methode nicht sichergestellt, dass Dateien gelöscht werden. Stattdessen sollten Sie die am besten geeignete Option verwenden:

Verwenden Sie eine finally-Klausel, um delete() manuell aufzurufen. Pflegen Sie Ihre eigenen Dateien zum Löschen und verarbeiten Sie sie an einem geeigneten Punkt im Lebenszyklus Ihrer Anwendung. Verwenden Sie den Unix-Trick, die Datei zu löschen, sobald alle Leser und Schreiber es geöffnet haben. Kein neuer Leser/Schreiber wird in der Lage sein, auf die Datei zuzugreifen, aber alle existierenden Leser haben weiterhin Zugriff, bis der letzte die Datei schließt.

1

Es ist sehr einfach:

File file = new File(YOUR_IMAGE_PATH).delete(); 
if(file.exists()) 
    file.delete(); 

Hoffe, dass es Ihnen helfen.

2

Dies ist ein weiterer Weg, nur Verzeichnisnamen übergeben Inhalt davon löschen

ex "/sdcard/abc/yourdata"

public void deleteFiles(String path) {  
    File file = new File(path); 

    if (file.exists()) { 
     String deleteCmd = "rm -r " + path; 
     Runtime runtime = Runtime.getRuntime(); 
     try { 
      runtime.exec(deleteCmd); 
     } catch (IOException e) { 

     } 
    } 

} 
3

Versuchen Sie den folgenden Code, um die automatisch erstellen zu löschen ed-Dateien und wenn Sie nicht wissen, wo sie gespeichert werden:

public void clearApplicationData() { 
    File cache = getCacheDir(); 
    File appDir = new File(cache.getParent()); 
    if (appDir.exists()) { 
     String[] children = appDir.list(); 
     for (String s : children) { 
      if (!s.equals("lib")) { 
       deleteDir(new File(appDir, s)); 
       Log.i("TAG", 
         "**************** File /data/data/APP_PACKAGE/" + s 
           + " DELETED *******************"); 
      } 
     } 
    } 
} 

public static boolean deleteDir(File dir) { 
    if (dir != null && dir.isDirectory()) { 
     String[] children = dir.list(); 
     for (int i = 0; i < children.length; i++) { 
      boolean success = deleteDir(new File(dir, children[i])); 
      if (!success) { 
       return false; 
      } 
     } 
    } 

    return dir.delete(); 
} 
1

das Probieren Sie es Datei aus dem externen Speicher löscht.

+0

ich den obigen Code verwendet und getestet von der Debug-Modus verwendet wird, tatsächlich ging der Debugger durch die Datei.delete() ;. Danach habe ich DDMS geöffnet und nach der Datei gesucht. Leider ist die Datei immer noch erschienen. Kannst du mich beraten? Wie kann ich das trainieren? – ChandraSekhar

+0

Könnten Sie bitte den Pfad angeben, wo Sie die Dateien speichern und löschen möchten. –

+0

Der Pfad lautet mnt/sdcard/audio.mp3 – ChandraSekhar

3

Ich glaube, Sie haben vergessen, die Schreibrechte in Ihre AndroidManifest.xml-Datei zu schreiben, deshalb gibt delete() immer false zurück.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
Verwandte Themen