Prüfen ob Datei existiert?
-
Jochen Kalmbach schrieb:
Nur zur Info: Intern wird nichts anderes als "GetFileAttributes" aufgerufen!
Somit würde ich lieber direkt diese Funktion aufrufen!
Und warum? Ich nutze gerade diese light weight API sehr gerner.
Ich hatte niemals Probleme mit dem Namen der Funktion
Ich meinen Augen ist dasASSERT(PathFileExists(pszFilename));
sprechender als
ASSERT(GetFileAttributes(pszFilename)!=INVALID_FILE_ATTRIBUTES);
-
Martin Richter schrieb:
Und warum?
Weil es eben nicht unterscheidet, ob es sich dabei um ein Verzeichnis oder eine Datei handelt. Was i.d.R. nicht ganz unerheblich ist... aber das hängt natürlich vom Anwendungsfall ab.
-
Habe ich was nicht mitbekommen
Laut GetFileAttributes Doku:
If the function succeeds, the return value contains the attributes of the specified file or directory.
Aber es gibt doch noch andere schöne Funktionen:
PathIsDirctory PathIsExe PathIsRoot PathIsNetworkPath
-
Martin Richter schrieb:
Habe ich was nicht mitbekommen
Laut GetFileAttributes Doku:
If the function succeeds, the return value contains the attributes of the specified file or directory.
Aber es gibt doch noch andere schöne Funktionen:
PathIsDirctory PathIsExe PathIsRoot PathIsNetworkPath
richtig. und es gibt auch noch
fopen
-
Schonmal überlegt ob so eine Abfrage überhaupt Sinn macht?
-
richtig schrieb:
richtig. und es gibt auch noch
fopen
Dies ist aber ganz schlecht, da dadurch die Datei selbst verändert wird!
Ein "GetFileAttributes" verändert erstens die Datei nicht und zweitesy ist es doppelt so schnell als ein "PathFileExists" + "!PathIsDirctory"!
-
flasch schrieb:
Schonmal überlegt ob so eine Abfrage überhaupt Sinn macht?
welche so eine, wa.
bevor man ne datei überschreibselt, könnte sich eine abfrage lohnen, wa.
-
Jochen Kalmbach schrieb:
richtig schrieb:
richtig. und es gibt auch noch
fopen
Dies ist aber ganz schlecht, da dadurch die Datei selbst verändert wird!
Verändert?!
-
klatsch schrieb:
flasch schrieb:
Schonmal überlegt ob so eine Abfrage überhaupt Sinn macht?
bevor man ne datei überschreibselt, könnte sich eine abfrage lohnen, wa.
nö, wa
-
umpf! schrieb:
Verändert?!
Ja, die "Access-Time" wird geändert.
Das wird sie z.B. bei einem "dir" bzw. GetFileAttributes/FindFirstFile nicht... (oder täusche ich mich da?)
-
Jochen Kalmbach schrieb:
umpf! schrieb:
Verändert?!
Ja, die "Access-Time" wird geändert.
Das wird sie z.B. bei einem "dir" bzw. GetFileAttributes/FindFirstFile nicht... (oder täusche ich mich da?)
Also ein einfaches Öffnen (CreateFile) bzw. Lesen (ReadFile) ändert den Zeitstempel für den letzten Zugriff nicht.
-
Du musst ein wenig warten, bis sich diese Änderungen zeigen
NTFS hat hier ein "gewissen" Delay! Starte mal den Rechner neu, dann siehst Du die Änderung.
PS: Das wäre ja fürchterlich, wenn sich ein Öffnen nicht auswirken würde. Dann wäre ja der Zeitstempel total sinnlos.
-
Jochen Kalmbach schrieb:
Gästchen schrieb:
MSDN schrieb:
Determines whether a path ... is valid.
Von welchem Doku-Bug redet Ihr?
Von dem fetten....
Die Erklärung, was mit "path to a file system object" gemeint ist, folgt dem doch (a file or a directory). Man muss die Erklärung nur Lesen und nicht mitten im Satz aufhören.
-
Ist Ansichtssache... ich lese trotzdem immer nur von einem *Pfad* und nicht davon, dass nach dem ganzen Objekt gesucht wird!
-
Jochen Kalmbach schrieb:
Du musst ein wenig warten, bis sich diese Änderungen zeigen
NTFS hat hier ein "gewissen" Delay! Starte mal den Rechner neu, dann siehst Du die Änderung.
PS: Das wäre ja fürchterlich, wenn sich ein Öffnen nicht auswirken würde. Dann wäre ja der Zeitstempel total sinnlos.
Oder Du hast Vista
Siehe:
http://computer-forensik.org/2007/11/19/ntfs-lastaccessupdate-unter-vista/
-
Das wäre eine Erklärung. In 10min ist die Stunde abgelaufen, dann wissen wir mehr.
-
Du hast aber *kein* Vista bzw. das Feature ist bei Dir auch aktiviert? (Standard bis Vista).
-
Vista und deaktiviert. Hab's jetzt mal aktiviert, Test muss aber bis morgen früh warten.
-
Jochen Kalmbach schrieb:
Ist Ansichtssache... ich lese trotzdem immer nur von einem *Pfad* und nicht davon, dass nach dem ganzen Objekt gesucht wird!
Zu dem Objekt führt ein Pfad (oder mehrere - Hardlinks etc.)
Dieser Pfad enthält selbstverständlich auch den Dateinamen.Die Doku ist IMO unklar und vielleicht irreführend, aber nicht wirklich falsch. Ändern sollten sie die Beschreibung wahrscheinlich trotzdem.
-
Also bei NtfsDisableLastAccessUpdate=0 wird auch unter Vista der Zeitstempel für die letzte Änderung beim Öffnen einer Datei sofort aktualisiert.