Vorm löschen einer Datei herausfinden ob diese gelöscht werden kann
-
Hi,
wie der Titel schon sagt. Bei mir ist es nämlich so, das ein kompletter Ordner (inkl. Unterordner und deren Dateien) gelöscht werden muss. Dabei will ich erst prüfen ob es da eine Datei (oder einen Ordner) gibt den ich nicht löschen kann. Denn wenn es so ist, dann darf ich den Datenbestand nicht anrühren.
Auf jedenfall muss ich irgendwie verhindern, das der Löschvorgang unterbrochen oder nicht vollständig ausgeführt wird.
Man könnte ja vorher alle Dateien, mit shareExclusive, öffnen und schließen und den Rückgabewert von CFile::Open auswerten... Aber irgendwie sagt mir diese Methode nicht zu.
Gibts da ne andere Möglichkeit?
-
Hm ich hätte eine Idee... Man könnte mit ::MoveFile den "obersten" Ordner umbenennen. Wenn es fehlschlägt, dann weis man zumindest das eine Datei (oder ein Ordner) von einem anderen Prozess verwendet wird.
Hat jemand noch einen besseren Vorschlag?
-
Sowas kann doch gar nicht gehen! Stell dir mal vor du findest raus das der Ordner gelöscht werden kann und dann während des Löschens ändert sich der Zustand...
-
Mit Windows Vista kommt das "Transactiona File System". Dann geht es.
-
..... schrieb:
Sowas kann doch gar nicht gehen! Stell dir mal vor du findest raus das der Ordner gelöscht werden kann und dann während des Löschens ändert sich der Zustand...
Naja für den Fall gibt es ja noch die "normale" Fehlerbehandlung. Es geht ersteinmal nur darum ob eine Datei oder ein Unterordner durch einen anderen Prozess "blockiert" ist.
-
Hi,
wenn das mit dem Ordner umbenennen funktioniert, kannst Du den umbenannten Ordner löschen. Da ändert sich bestimmt nichts mehr, da die Pfadangaben nicht mehr stimmen.
Außer: Ein Unterordner besitzt ne Netzwerkfreigabe. Allerdings macht es dann keinen Sinn den Ordner zu löschen.
Gruss Sven