-
Eigentlich sollte der Close die Datei wieder freigeben.
Ggf. hast du aber noch ein anderes Objekt, dass die Datei noch geöffnet hält ?
-
Wenn die Files keinen weiteren Einfluss auf die Programmlogik haben, könntest du es mit:
deleteOnExit() probieren, der merkt sich die Datei bis zum Ende VM und löscht sie dann.
eventuell auch.
if (!file.delete()) {
file.deleteOnExit();
}
Hier die API
/Robert
-
Hallo Robert,
den deleteOnExit hab ich auch schon gesehen. Aber wie Du schon sagst löschen der die Datei erst beim Beenden der JVM. Und da das Programm in einem Tomcat läuft, würde das ewig warten, weil dieser nur einmal am Tag neu gestartet wird.
Ich werd's wohl doch mal mit einer Schleife versuchen. Bleibt mir wohl nix anderes übrig.
Trotzdem Danke,
KM
-
Noch eine andere Frage:
Wo wird den die Datei verarbeitet?
Ich nehme an, dass c.get den FTP Transfer mach. Irgendwo muss das File ja ja auch verarbeitet (InputStream) werden. Dort könnte es ja auch Referenzen geben.
/Robert
.
-
Ja, der c.get macht den FTP-Transfer. Bei dieser Datei handelt es sich um eine XML-Datei, die nach der Übertragung einfach nur validiert wird und dann wieder gelöscht wird.
Jetzt hab ich mal direkt nach der Validierung in einem finally-Block eingebaut, dass die Referenzen sämtlicher verwendeter Objekte explizit auf null gesetzt werden. Und danach führe ich noch einen System.gc() durch. Mal sehen was ich jetzt für ein Ergebnis erhalte. Wenn das Problem dann immernoch besteht, kann es eigentlich nur noch ein Zeitproblem sein, weil der GC dann offenbar nicht schnell genug greift.
Gruß,
KM
-
Wie gesagt, der gc dürfte gar nicht das Problem sein, da dieser nur aufräumt (vergessene Close auch schließt).
Ein expliziter Close muss die Ressource Datei freigeben!
Vielleicht gibts ja eine Ausnahme, die dein Programm nicht zum Close der Datei führt, so dass eben der Delete fehlschlägt.
-
huhu,
bei mir war es auch mal ein einfacher stream (Buffer/file) wo durch die Datei sich nicht löschen lies . Musste beide streams ganz am ende nochmal closen und dann gings.
mfg mathias
-
nur zur Info...
Nachdem ich meine Applikation folgendermaßen geändert habe...
Jetzt hab ich mal direkt nach der Validierung in einem finally-Block eingebaut, dass die Referenzen sämtlicher verwendeter Objekte explizit auf null gesetzt werden. Und danach führe ich noch einen System.gc() durch.
...hab ich das jetzt mal eine Weile verfolgt. Jetzt ist der Fehler nicht mehr aufgetreten, sondern alles läuft problemlos. Offenbar sollte man doch immer alles selber auf null setzen und sicherheitshalber den System.gc() mal aufrufen.
Gruß,
KM
-
Similar Threads
-
By codierknecht in forum NEWSboard Programmierung
Antworten: 10
Letzter Beitrag: 27-08-08, 05:13
-
By Bobou in forum IBM i Hauptforum
Antworten: 14
Letzter Beitrag: 16-01-07, 10:26
-
By dino in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 08-12-06, 19:14
-
By dino in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 22-05-06, 18:59
-
By Enatz in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 07-12-05, 21:10
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks