[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    Das heißt ich muß dann wohl eine Schleife programmieren, in der ich immer wieder versuche die Datei zu löschen, bis es endlich funktioniert hat.

    Und dabei geht es doch nur um so eine banale Sache wie das Löschen einer Datei...

    Gruß,
    KM

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Eigentlich sollte der Close die Datei wieder freigeben.
    Ggf. hast du aber noch ein anderes Objekt, dass die Datei noch geöffnet hält ?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Oct 2004
    Beiträge
    251
    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

  4. #4
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    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

  5. #5
    Registriert seit
    Oct 2004
    Beiträge
    251
    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
    .

  6. #6
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    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

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Sep 2008
    Beiträge
    6
    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

  9. #9
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    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

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Um zu sehen, wann eine Datei geöffnet und geschlossen wurde (auch vieles andere) helfen vielleicht folgende Monitor-Programme:

    Windows Sysinternals: Documentation, downloads and additional resources

    File and Disk Utilities: Sysinternals Center, Microsoft TechNet
    Sysinternals Process Utilities
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Dateien auf dem IFS löschen
    By codierknecht in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 27-08-08, 05:13
  2. Dateien aus dem IFS löschen
    By Bobou in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 16-01-07, 10:26
  3. Dateien im IFS bzw. QDLS über Explorer löschen
    By dino in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 08-12-06, 19:14
  4. Dateien in QDLS bzw. IFS über Explorer löschen
    By dino in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 22-05-06, 18:59
  5. Dateien im freigegebenen Ordner im IFS löschen
    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
  •