Dateien löschen
-
Hi!
Ich schreibe gerade ein Programm, in dem ich eine temporäre Datei anlegen möchte und nach Verwendung wieder löschen möchte. Ist das möglich? Ich erstelle die Datei mitofstream of("a.txt");
thx,
Iso
-
#include <cstdio> //... std::remove("a.txt");
-
Jo es ist möglich. Google doch mal "C++ Datei löschen".
EDIT: *Homer* Nein! Zu spät
-
danke!
aber jetzt bekomme ich den Fehler EACCES, i.e Fehlende Schreibrechte. Hier ist der Code:
ofstream fwrite(datafilename.c_str(),ios::out|ios::binary); .. //writing data, using the file int err = remove(datafilename.c_str());
Fehlt mir vielleicht irgendein flag?
thx,
Iso
-
Wenn du mit dem ofstream arbeitest, brauchst du nicht noch explizit ios::out angeben.Desweitern würde ich vor dem löschen die Datei wieder schließen.
-
Isomorphismus schrieb:
Fehlt mir vielleicht irgendein flag?
thx,
IsoNein, Du musst den Stream erst wieder schließen:
fwrite.close();
-
Was bedeutet das Wort "explizit" ?
-
Ok, Datei wird geschlossen, aber das Problem bleibt erhalten..
ofstream fwrite(datafilename.c_str(),ios::binary); //writing, using the file fwrite.close(); if(fwrite.is_open()) cout << "fwrite is still open" << endl; int err = remove(datafilename.c_str());
In die fwrite.is_open() ist false, also der stream muss geschlossen sein..
-
Mach doch mal das folgende noch hin und sag uns, was auf der Konsole ausgegeben wird:
// Wie bekannt ... int err = remove(datafilename.c_str()); if(err != 0) { perror("Error"); }
Nun sollte auf der Konsole eine Fehlerbeschreibung erscheinen. Aber ich habe die Vermutung, dass dort stehen wird "Error: Access Denied", oder so ähnlich.
Grüssli
-
Auf der Konsole steht "Permission denied".
-
du benutzt windows und der indizierungsdienst läuft.
die datei ist nicht löschbar, solange der indizierungsdienst sie in ihren griffeln hat und indiziert.
-
Doofes Windows. Unter Linux funktioniert es einwandfrei.
Danke für die Hilfe,
Isomorphismus