Hallo,

mein Problem gehört jetzt zwar nicht direkt in die Kategorie Java auf iSeries, aber vielleicht kann mir trotzdem jemand helfen.

Ich habe derzeit massive Probleme beim Löschen von Dateien. Ich habe z.B. folgenden Java-Code, der auf einem Windows-Server unter Java 1.6 läuft:

Code:
// Dateien einzeln runterladen
FileOutputStream fos = new FileOutputStream(new File(localfile));
c.get(remotefile, fos);  // --> FTP-Übertragung
fos.close();
fos = null;
System.gc();
.
.
.
File f = new File(localfile);
f.delete();
Der Teil, der durch die Punkte dargestellt ist, ist für alle Dateien gleich.
Wenn ich die Routine mit mehreren Dateien durchlaufe, werden nur manche sporadisch gelöscht und manche bleiben stehen. Es sollen eigentlich alle gelöscht werden.

Jetzt habe ich schon mehrfach gelesen, dass man vor dem delete() unbedingt den Garbage Collector anschubsen soll, weil es sonst Probleme geben könnte. Auf der anderen Seite habe ich aber auch gelesen, dass der System.gc() eigentlich nie verwendet werden soll. Ich dachte eigentlich, dass mit obigem Code die Referenzen auf die localfile komplett gelöscht werden, so dass der delete eigentlich funktionieren müsste. Das scheint aber nicht so zu sein.

Wie kann ich denn sonst noch sicherstellen, dass eine Datei auch wirklich gelöscht wird ?

Danke,
KM