Prüfen ob Datei geöffnet ist bzw Stream finden

Alex04

Bekanntes Mitglied
Hallo,
ich arbeite an einem Programm mit einigen 10.000 Zeilen Code. Irgendwann ist die Zeit gekommen eine Datei zu löschen. Leider geht das nicht, da die Datei anscheinend noch geöffnet ist.
Ich will jetzt feststellen wo evtl vergessen wurde einen Stream o.ä. auf diese Datei zu schließen.
Das ist aber nicht so leicht bei so vielen Zeilen Code -> gibt es ne Möglichkeit die Datei auf iwelche Inputstreams zu überprüfen?

Danke schonmal für jegliche Art von Tipps!

Achja, ich kenne canWrite()....

Lg
Alex
 
Code hilft dir zunäst nicht, außer um nach "Stream" usw. zu suchen,
du willst doch eher zur Laufzeit wissen, welche bestimmte Codestelle gerade eine konkrete Datei x bearbeitet, oder?

ob es etwas vorgegebenes dazu gibt kann ich nicht sagen, ich schlage eine allgemeine Lösung vor die quasi überall gilt:
merke dir selber was in deinem Programm passiert, gehe doch wieder in die 10.000 Zeilen Code, suche alle Stellen die Dateien öffnen,
und schreibe dort vor und nach dem Öffnen Code wie
Java:
FileOpenRegistry.register(file, infoÜberMich, z.B. Klassenname);
.. open ..
FileOpenRegistry.unregister(file, infoÜberMich, z.B. Klassenname);
dann kannst du später in der eigenen Klasse FileOpenRegistry mit Map oder so nachschauen, was für ein bestimmtes File an Informationen abgelegt ist, vielleicht auch die komplette Historie bearbeitetet Dateien anschauen
 
Auch bei zigtausend Zeilen Code sollte es doch eigentlich nur wenige (=eine oder zwei) Stellen geben, die eine bestimmte Datei öffnen, oder? Insofern müsste man die Stellen doch doch mit Analyse des Codes finden können.
Ansonsten könnte man es mit einem Profiler versuchen, der einem zu einem beliebigen Zeitpunkt eine Übersicht aller in der VM allokierten Objekte ermöglicht. Damit könnte man evtl. sehen, welche File(In/Out)putStreams noch vorhanden sind und von wo aus die angelegt worden sind. Aber ob das jetzt weniger Aufwand ist als die Analyse des Codes?
 

Neue Themen


Zurück
Oben