Löschen von temporären Dateien
-
Hi,
Muss man etwas beim Löschen von temporären Dateien berücksichtigen?
Aus irgendwelchen Gründen klappt es bei mir nicht. Dafür verwende ich die Funktion File::Delete. Mein Quellcode:[cpp] // erstellung eine tmpdatei ... String^ m_PreproC2VFileName = Path::GetTempFileName(); StreamWriter^ streamWriter(nullptr); try { streamWriter = gcnew StreamWriter(gcnew FileStream(m_PreproC2VFileName, FileMode::OpenOrCreate | FileMode::Truncate)); streamWriter->Write (m_UpdateInfo); streamWriter->Close(); } finally { if (streamWriter != nullptr) streamWriter->Close(); } // ... // remove the file // löschen temporäre dateien try { if (File::Exists (m_PreproC2VFileName)) File::Delete (m_PreproV2CFileName); } catch (Exception^ e) { }[/cpp]
Beim Remove gibt es keine Exception, die Datei bleibt aber erhalten.
Was ist hier falsch?
Danke.
-
Hi!
Ich bin jetzt kein Experte, aber vielleicht hilft dir das.
Ich nutze zum Löschen meiner Dateien folgendes:
char* path = "c:\\folder\morefolder\file.xyz"; DeleteFile(path);
-
www.pat schrieb:
Hi!
Ich bin jetzt kein Experte, aber vielleicht hilft dir das.
Ich nutze zum Löschen meiner Dateien folgendes:
char* path = "c:\\folder\morefolder\file.xyz"; DeleteFile(path);
Ist diese Funktion aus SDK?
-
www.pat schrieb:
Hi!
Ich bin jetzt kein Experte, aber vielleicht hilft dir das.
Ich nutze zum Löschen meiner Dateien folgendes:
char* path = "c:\\folder\morefolder\file.xyz"; DeleteFile(path);
Eigentlich hätte ich gerne eine Lösung aus dem Framework 2.0
-
Aus irgendwelchen Gründen klappt es bei mir nicht
Das ist keine Fehlerbeschreibung.
Was passiert denn ?
Eine Exception ?
Fehlermeldung ?Btw.: Dem ersten try fehlt ein catch, der Code wird AFAIK so nicht mal kompliliert.
-
Den Befehl hab ich gegoogelt und für gut befunden. Sry, mehr weis ich nicht ^^
http://www.c-plusplus.net/forum/viewtopic-var-p-is-897694.htmlNaja... stimmt der pfad eigentlich? probier mal sowas:
{ // String überprüfen this->textBox1->Text = m_PreproV2CFileName; bool debug_existing = File::Exists (m_PreproC2VFileName) if (existing) File::Delete (m_PreproV2CFileName); }
File::Delete ist void, oder?
Wird debug_existing == false? Was steht im String?
-
Wenn das Delete keine Exception wirft, dann wurde die Datei auch gelöscht!
Und wenn das Delete eine Exception wirft, dann solltest Du nachschauen, was für eine Exception es ist und was da drin steht!
Vermutlich ist die Datei noch in verwendung...
-
Jochen Kalmbach schrieb:
Wenn das Delete keine Exception wirft, dann wurde die Datei auch gelöscht!
Und wenn das Delete eine Exception wirft, dann solltest Du nachschauen, was für eine Exception es ist und was da drin steht!
Vermutlich ist die Datei noch in verwendung...Es wird keine Exception geworfen. Aber die Datei bleibt trotzdem da, wo sie ist. Darüber hinaus kann ich die Datei manuell im Explorer löschen, während das Programm läuft. Also ist sie nicht vom einem Prozess belegt, wie bereits hier vermutet wurde.
-
if (File::Exists (m_PreproC2VFileName)) File::Delete (m_PreproV2CFileName);
Was steht in m_PreproC2VFileName und was in m_PreproV2CFileName ?
-
Warscheinlich hast du irgendwo vergessen, dass \ eine Escapefolge nach sich zieht, denn das Zeichen \ wird im String \\ Geschrieben
"c:\\folder\morefolder\file.xyz"
sollte also
"c:\\folder\\morefolder\\file.xyz"
heißen
-
Knuddlbaer schrieb:
if (File::Exists (m_PreproC2VFileName)) File::Delete (m_PreproV2CFileName);
Was steht in m_PreproC2VFileName und was in m_PreproV2CFileName ?
in der tat sind das zwei unterschiedliche dateien