1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. mblas, 06.10.2011 #1
    mblas

    mblas Threadstarter Neuer Benutzer

    Hi, ich hab das folgende Problem. Ich kann eine Datei einfach nicht löschen, weder über meine App mit file.delete() aber auch nicht von Hand mit dem DDMS.

    File file = ​
    new File(aktiveListe.toString());

    bool check=file.delete();

    -> liefert mir false zurück

    file.deleteOnExit(); geht auch nicht.

    Ich vermute, weil ich die Datei davor mit einem Stream gelesen hab, ist der noch irgendwie geöffnet. Aber was kann ich noch machen ausser. stream.close().

    Sourcecode zum Datei anlegen:
    FileOutputStream fOut = openFileOutput(String.valueOf("lala.txt",​
    MODE_PRIVATE);

    fOut.flush();​
    fOut.close();

    und ein ander mal:

    FileOutputStream writer = openFileOutput(​
    aktiveListe,MODE_APPEND);
    String test =
    "test";
    try{
    writer.write(test.getBytes());
    }
    catch(FileNotFoundException e){
    e.printStackTrace();
    }
    finally{
    writer.flush();
    writer.close();

    }

    und:


    FileInputStream fileIn = openFileInput(​
    aktiveListe);
    BufferedReader fileInBuffer =
    new BufferedReader(new InputStreamReader(fileIn));

    int i=0;

    //Textdatei einlesen

    try {
    while (i<54){
    buffer = fileInBuffer.readLine();
    i++;
    }
    fileInBuffer.close();

    fileIn.close();


    Die Streams sind doch alle richtig beendet oder?
    Woran kann es noch liegen, dass ich eine Datei nicht löschen kann?
     
  2. Thyrion, 06.10.2011 #2
    Thyrion

    Thyrion Ehrenmitglied

    Hast du mal versucht die Stream-Objekte (nach dem close()) per dispose() aus dem Speicher tilgen zu lassen?

    Alternative: Alle Referenzen auf das Stream-Objekt löschen und den Garbage-Collector starten.
     
  3. mblas, 06.10.2011 #3
    mblas

    mblas Threadstarter Neuer Benutzer

    Garbage Collector funktioniert nicht.
    Wie rufe ich dispose() auf sodass ich die Streams lösche?

    Liegt das überhaupt an den Streams?
     
  4. Thyrion, 06.10.2011 #4
    Thyrion

    Thyrion Ehrenmitglied

    Java ist zwar nicht meine Welt, aber ein ähnliches Problem hatte ich mit anderen Sprachen schon - ich vermute, dass es daran liegt.

    Und wie sieht es mit "fileIn.dispose()" aus?
     
  5. mblas, 06.10.2011 #5
    mblas

    mblas Threadstarter Neuer Benutzer

    Kann sein, dass ich mich gerade ziemlich dumm anstell aber die Methode gibt es nicht ... :sad:
     
  6. Thyrion, 06.10.2011 #6
    Thyrion

    Thyrion Ehrenmitglied

    Das ist gut möglich ;) - wie gesagt, mein Java ist komplett eingerostet :(
    Aber ich weiß, dass es möglich ist, den Destruktor manuell aufzurufen.
     
  7. mblas, 06.10.2011 #7
    mblas

    mblas Threadstarter Neuer Benutzer

    hmm ich finde einfach keine Lösung. :unsure:
    Ich glaube es liegt nicht an den Streams ich kann auch keine Dateien löschen die noch nie innerhalb eines Streams benutzt wurden.
    Weitere Ideen oder noch besser Lösungsvorschläge.
     
  8. mblas, 08.10.2011 #8
    mblas

    mblas Threadstarter Neuer Benutzer

    Ich möchte doch nur die Dateien von meinem Handy löschen.
    Gibts da keine Möglichkeiten, die einfach hart zu löschen. Ohne darauf zu achten ob die noch mit nem Stream etc. verbunden sind???
     
  9. Fr4gg0r, 10.10.2011 #9
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    f.exists()
    und Log.d("filepath", f.getPath());
    sollte helfen. ;)
     
  10. mblas, 10.10.2011 #10
    mblas

    mblas Threadstarter Neuer Benutzer

    gibt mir lala.txt im LogCat aus ...
    "lala.txt" ist der Name meiner Tesdatei aber löschen kann ich sie immer noch nicht ...
     
  11. Fr4gg0r, 10.10.2011 #11
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    klappt natürlich nicht, der Name muss der volle Pfad zu der Datei sein
    zb /sdcard/lala.txt
     
    mblas gefällt das.
  12. mblas, 11.10.2011 #12
    mblas

    mblas Threadstarter Neuer Benutzer

    ja ich muss den KOMPLETTEN Pfad angeben, dass war das Problem.
    Vielen Dank
    Thread kann geschlossen werden.
     
  13. RED-BARON, 08.02.2012 #13
    RED-BARON

    RED-BARON Android-Hilfe.de Mitglied

    Hallo, ich habe das gleiche Problem, auch mit kompletter Pfad Angabe.

    Meine App wird über den Browser geladen und installiert. Nun kann man

    diese aus der Downloadliste löschen, auf der sdcard bleibt sie aber

    dennoch. Meine App soll nun beim Start die apk löschen. Der Code ist

    vereinfacht und soll erstmal den kompletten Download Ordner leeren.

    String state = Environment.getExternalStorageState();
    if( state.compareToIgnoreCase("mounted") == 0)

    {
    File externalStorage = Environment.getExternalStorageDirectory();


    String path = externalStorage.getAbsolutePath();

    path = path + File.separator + "download";





    File directory = new File(path);

    File[] fileList = directory.listFiles();
    if( fileList != null )

    {
    for ( int i = 0;i<fileList.length;i++)


    {

    File file = fileList;



    // Datei wird nicht gelöscht, evtl. keine Rechte ^^

    file.delete();





    }

    }

    }
    else

    {
    // "removed"


    }

    der file-member "path" enthält den Inhalt:

    "/mnt/sdcard/download/appInstaller.apk"

    die Datei ist vorhanden, wird aber nicht gelöscht.

    Der eingebaute Dateibrowser kann diese löschen.

    DDMS zeigt für die Datei: -rwxrwxr-x

    Mir fehlen demnach wohl die Rechte ! Was nun ?

    LG, RB

    EIDT:

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

    Mit Angabe dieser Permission funktioniert es nun ! :)
     
    Zuletzt bearbeitet: 08.02.2012
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] SQLITE insert gibt negative id zurück Android App Entwicklung 18.09.2017
Der Zurück-Button wird nicht angezeigt Android App Entwicklung 23.01.2017
Du betrachtest das Thema "file.delete gibt false zurück" im Forum "Android App Entwicklung",