PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : checkfile Funktion noch einfacher ?



|)4NT3
11.06.2010, 16:28
Hallo
ich habe mir eine Funktion geschrieben um zu Überprüfen ob man auf eine Datei zugriff hat und wenn das der Fall ist wird sie gelöscht und eine neu leere Datei am gleichen Ort mit gleichem Namen erstellt.


Wofür soll das gut sein ?
Wenn man z.B. die Windows host Datei ändern möchte
Wir geprüft:
- Datei vorhanden ?
- Löschen (optional)
- wenn gelöscht wurde neu erstellen
- Kann die Datei geöffnet werden ?
hat alles geklappt wir ein TRUE zurückgegeben.

So nun meine Frage:
Kann man das ganze noch einfacher und kürzer schreiben ??
Und gibt es mehr möglichkeiten wenn ein FALSE kommt als nur abzubrechen ?



Hier der Code


bool checkfile(char* Pfad, bool Del)
{
FILE* Datei;
// Datei vorhanden ?
if((GetFileAttributes(Pfad) == INVALID_FILE_ATTRIBUTES)) // Überprüfen ob Datei vorhanden
{ // wenn nein
if((Datei = fopen(Pfad,"w")) == NULL) // Datei erstellen
{ // Wenn erstellen fehlgeschlagen
return FALSE;
}
fclose(Datei); // Datei schießen
}
// Löschen
else if (Del == TRUE) // dann Datei löschen
{
if (remove(Pfad)!=0) // Datei löschen
{ // wenn fehlgeschlagen
// Attri ändern
SetFileAttributes(Pfad, FILE_ATTRIBUTE_READONLY); // Attribute ändern
SetFileAttributes(Pfad, FILE_ATTRIBUTE_NORMAL); // Attribute ändern
if (remove(Pfad)!=0) // Datei löschen
{ // wenn fehlgeschlagen
return FALSE;
}
}
}
// Kann geöffnet werden ?
if((Datei = fopen(Pfad,"w")) == NULL)
{
SetFileAttributes(Pfad, FILE_ATTRIBUTE_READONLY); // Attribute ändern
SetFileAttributes(Pfad, FILE_ATTRIBUTE_NORMAL); // Attribute ändern
if((Datei = fopen(Pfad,"w")) == NULL)
{
return FALSE;
}
}
return TRUE; // Wenn Datei O.K. ist True
}
:lol Freu mich auf eure Vorschläge.
Gruß Dante