# Datei löschen



## grindelaner (10. Jul 2014)

Hallo,

wie kann ich prüfen, ob ich eine Datei wirklich löschen kann?

Hintergrund:
Ich habe ein Java-Programm, dass ich Updaten möchte. Beim Update werden die jar-Datein einfach durch löschen und kopieren ersetzt. Läuft aber gerade eine zweite Instanz des Programms auf einen Rechner, sind die Jar-Datein durch die andere JVM gesperrt...

Ein Update (löschen und kopieren) der jar-Dateien würde in diesem Falle fehl schlagen...

Hat jemand eine Idee wie ich im Vorfeld prüfen kann, ob ein anderer Windows-Nutzer auf die Datei zugreift?


----------



## turtle (10. Jul 2014)

```
File f =,,,
	f.canWrite();
	f..canRead();
```


----------



## Thallius (10. Jul 2014)

Was Dir aber auch nichts nutzt wenn der Lock genau zwischen der Abfrage und dem Löschen geschieht.

Der einzig vernünftige Weg ist zu überprüfen ob das Löschen geklappt hat und wenn nicht einen entsprechenden Requester zu öffnen in dem der User aufgefodert wird die anderen Programme zu schliessen.

Gruß

Claus


----------



## grindelaner (10. Jul 2014)

Hallo Thallius,

genau das wollte ich eigendlich umgehen und im Vorfeld sicher stellen, dass ich ALLE Dateien löschen kann 

f.canWrite() und f.canRead() funktioniert leider nicht... Das war auch meine erste Idee...

Wenn ich über Java wüsste, ob jemand noch auf die Datei zugreift wäre ich glücklich. 
Der manuelle Weg über Windows wäre:
"Start/Systemsteuerung/Verwaltung/Computerverwaltung ->System ->Freigegebene Ordner ->Geöffnete Dateien"

...und das am Besten mit den Boardmitteln von Java 1.7 oder 1.6...


----------



## Thallius (10. Jul 2014)

Du hast dich noch nie so richtig mit multi-threadding befasst oder? Denn anscheinend hast du den Grundgedanken meines Post nicht vertanden,

Es nutzt dir nichts wenn du abfragst ob du die datei löschen kannst!!!!

Denn in dem Moment, selbst wenn du in der nächsten Zeile nach der Abfrage die Datei löscht, kann es trotzdem passieren, dass nach der Abfrage dein Programm erstmal vom OS angehalten wird und ein anderes Programm zur Ausführung kommt was genau in dem Moment die Datei öffnet.

Es geht also gar nicht anders als abzufragen ob das Löschen geklappt hat. Ich sehe auch keinen Grund warum Du das nicht so machen möctest.

Claus


----------



## grindelaner (10. Jul 2014)

Hallo Claus,

ich weiß schon was du meinst... Aber die jar-Dateien gehören exclusiv zu meiner Anwendung. Daher kann ich ausschließen, dass irgend ein anderes Programm die Datein im nächsten Moment sperrt...

Ich finde den Gedanken einfach charmanter zuerst zu prüfen, ob die Dateien gelöscht werden, als per TryAndError...

Aber ich sehe keine bessere Lösung....


----------



## taro (11. Jul 2014)

> ich weiß schon was du meinst... Aber die jar-Dateien gehören exclusiv zu meiner Anwendung. Daher kann ich ausschließen, dass irgend ein anderes Programm die Datein im nächsten Moment sperrt...



und im nächsten Moment greift der Virenscanner darauf zu ... 

oder die Rechte reichen nicht aus, um die Datei zu löschen ...


----------



## Thallius (11. Jul 2014)

taro hat gesagt.:


> und im nächsten Moment greift der Virenscanner darauf zu ...



Daran habe ich als Mac User natürlich gar nicht gedacht 

SCNR

Claus


----------



## Anti-Banane (11. Jul 2014)

ach komm .. als ob es für mac / unix nicht auch viren geben würde ...
außerdem : auch windows kann stabil und sauber laufen ... wenn man nicht so ein voll-honk ist und überall erstmal drauf klickt


----------

