file.delete gibt false zurück

M

mblas

Neues Mitglied
0
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?
 
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.
 
Garbage Collector funktioniert nicht.
Wie rufe ich dispose() auf sodass ich die Streams lösche?

Liegt das überhaupt an den Streams?
 
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?
 
Kann sein, dass ich mich gerade ziemlich dumm anstell aber die Methode gibt es nicht ... :sad:
 
Das ist gut möglich ;) - wie gesagt, mein Java ist komplett eingerostet :(
Aber ich weiß, dass es möglich ist, den Destruktor manuell aufzurufen.
 
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.
 
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???
 
f.exists()
und Log.d("filepath", f.getPath());
sollte helfen. ;)
 
gibt mir lala.txt im LogCat aus ...
"lala.txt" ist der Name meiner Tesdatei aber löschen kann ich sie immer noch nicht ...
 
klappt natürlich nicht, der Name muss der volle Pfad zu der Datei sein
zb /sdcard/lala.txt
 
  • Danke
Reaktionen: mblas
ja ich muss den KOMPLETTEN Pfad angeben, dass war das Problem.
Vielen Dank
Thread kann geschlossen werden.
 
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:

Ähnliche Themen

A
  • AnimaAngelo85
Antworten
1
Aufrufe
326
swa00
swa00
S
Antworten
3
Aufrufe
632
swa00
swa00
M
  • MikelKatzengreis
Antworten
10
Aufrufe
190
swa00
swa00
Zurück
Oben Unten