dateitest mit fstream / *.is_open()
-
Hallo!
Ich habe ein Problem mit einem Dateitest.
Es soll eine *.csv-Datei zum Lesen und Schreiben geoeffnet werden. Das funktioniert auch wunderbar. Wenn ich die Datei in "Excel" z.B. geoeffnet habe, dann wird das von meinem Programm mit if(!Datei){} auch wunderbar erkannt, dass die Datei schon in Benutzung ist.
So, wenn ich die *.csv-Datei mit einem Editor geoeffnet habe (z. B. UltraEdit), dann merkt das mein c++-Programm ueberhaupt nicht, weil die Datei offensichtlich nicht zur weiteren Benutzung gesperrt wird.Wie kann ich testen, ob mein *.csv-File schon in Benutzung ist oder ned?
Gibts hier was aehnliches zum abfangen der "Sperrfunktion von Excel"?Ein Test mit ofstream() bringt hier auch nicht die Loesung, weil der zwar erkennt dass die Datei vorhanden ist, aber sie mir halt gnadenlos kuerzt!
-
Wenn der Editor die Datei nicht sperrt, so wie es Excel anscheinend tut, dann ist sie halt nicht gesperrt.
-
Tja, das mag Deine Sichtweise sein, nur das Problem ist halt, dass nicht nur ich auf die Datei zugreife. Somit kann es zu unterschiedlichen Dateiangaben/-ausgaben kommen, weil halt die Datei zeitgleich auch beschrieben/geaendert werden koennte.
Darum will ich ja auch feststellen, ob die Datei gerade in Bearbeitung ist oder ned.
-
Wenn der Editor sich aber nicht kooperativ verhält, dann kannst du das von deiner Seite aus auch nicht richten.
-
Zu prüfen ob eine Datei gesperrt ist müsste doch mit irgendeiner OS-Funktion gehen vll ala fstat oder sogar flock selbst.
Wenn du mit ofstream testen willst ohne die Datei zu kürzen wenn sie nicht gelockt ist, dann benutz doch einach ios::app.
-
prolog schrieb:
Zu prüfen ob eine Datei gesperrt ist müsste doch mit irgendeiner OS-Funktion gehen vll ala fstat oder sogar flock selbst.
Wenn du mit ofstream testen willst ohne die Datei zu kürzen wenn sie nicht gelockt ist, dann benutz doch einach ios::app.
Ja cool,
danke fuer die Ideen!
Werd ich gleich mal ausprobieren!