tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
611
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Dr$arez
    Dr$arez Dr$arez ist offline Mitglied
    Registriert seit
    Jan 2005
    Ort
    (Sachsen)
    Beiträge
    18
    Hallo liebe Java-Gemeinde,

    seit langem habe ich mal wieder ein scheinbar unlösbares Problem: Dateien zu löschen.

    Der Code zum löschen der Datei wurde lehrbuchgerecht geschrieben. Der Haken: ich arbeite auf legacy code und ich bin mir nicht sicher, ob der Stream zur Datei garantiert vorher geschlossen wurde. Ergebnis: mal wird die gewünschte Datei gelöscht und mal nicht!

    Gibt es entweder eine Möglichkeit, alle offenen Data-Streams zu erfragen und zu schließen, oder eine wirklich brutale Methode eine Datei aus Java heraus zu vernichten? Ich muss mir sicher sein, dass nach der von euch vorgeschlagenen Methode die Datei nicht mehr unter Windows/BS zu finden ist.

    Danke für jeden produktiven Vorschlag

    TS
     

  2. #2
    Avatar von Chefkoch333
    Chefkoch333 Chefkoch333 ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Beiträge
    112
    Hi TS,
    mit reinem Java fällt mir da auch keine Lösung ein. Alternativ könntest du aus Java direkt ein Shell Command absetzten. Wenn es nur für Windows funktionieren muss sollte ein "del /f" funktionieren.

    vg,
    ck.
     

  3. #3
    Avatar von Sentoo
    Sentoo Sentoo ist offline Mitglied Gold
    Registriert seit
    Jul 2009
    Ort
    Brühl
    Beiträge
    131
    Hallo zusammen,

    darüber bin ich auch schon mehrfach gestolpert. Wir haben es meistens so gelöst, dass die Dateien per Shell Skript abgeräumt worden sind. Normalerweise sollte File#deleteOnExit() das erledigen.

    Nach ein wenig Suchen, habe ich einen immer noch offenen Bugeintrag bei Sun gefunden. In dem Eintrag wird darauf hingewiesen, dass das Flag FILE_SHARE_DELETE genutzt werden soll, wenn Streams auf die Datei geöffnet werden. Damit würde das delete ermöglicht, obwohl immer noch Streams offen sind. Aber Du arbeitest mit legacy Code, also hast Du darauf keinen Einfluss(?).

    Ganz unten im Beitrag sieht man, dass im JDK 7 an einer Lösung gearbeitet wird :/

    Eine Idee wäre,
    1. sich alle Instanzen der fraglichen Streams aus der VM zu holen
    2. über die Streams zu iterieren
    3. wenn der Stream auf die fragliche Datei zeigt -> schließen
    Bleibt das Problem alle Instanzen der Typen zu bekommen. Bei StackOverflow habe ich dazu eine Frage gefunden ... müsstest aber noch etwas suchen. Ansonsten wüsste ich nicht, wie Du dem Legacy Problem Herr werden könntest.

    Gruß Sen
     

Ähnliche Themen

  1. Dateien löschen mit .bat
    Von dkaj im Forum Sonstige Sprachen
    Antworten: 2
    Letzter Beitrag: 05.02.07, 22:23
  2. Mit JS Dateien löschen?
    Von schoko im Forum Javascript & Ajax
    Antworten: 9
    Letzter Beitrag: 04.08.06, 13:00
  3. Dateien Löschen
    Von druckgott im Forum Linux & Unix
    Antworten: 3
    Letzter Beitrag: 09.03.04, 11:51
  4. löschen von dateien....
    Von noname im Forum PHP
    Antworten: 7
    Letzter Beitrag: 22.03.03, 17:12
  5. dateien löschen...
    Von nox im Forum PHP
    Antworten: 6
    Letzter Beitrag: 28.04.02, 17:31

Stichworte