HI
Ich wollte fragen, wie man in c++ Dateien löschen kann (z.B. im Temporären Verzeichnis). Gibt mir bitte den Befehl. Danke im Voraus
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
In Ansi c++ fällt mir da pauschal nur das FILE -Objekt ein aber ich weiss nicht ob das zum löschen taugt(eher nicht ;-) ). Musst mal in der Doku schauen.
Ansonsten solltest Du das Betriebs-System angeben unter dem Du arbeitest. Unter Windows heisst die Methode sinnvoller Weise DeleteFile.
Ich arbeite mit Windows (XP) und benutze Microsoft Visual C++ 6. Danke
#include <windows.h>
DeleteFile( "DateiName" );
Ein bischen trivial, oder? MSDN hast du wohl nicht installiert.
Hey
Warum löscht er die Datei nicht, wenn ich das Verzeichnis angebe und die Datei?
Hey
Warum versuchst du nicht etwas mehr Informationen über deinen Code rauszulassen?
Ich möchte eigentlich nur ein programm schreiben, dass den Ordner Temp löscht!
Ich habe eine Eingebung.. jemand der zum löschen einer Datei in einem Forum fragen muss weiss sicher nicht das
DeleteFile("c:\\test.txt"); richtig ist
Das Backslash "\\" muss man doppelt setzen also 2x hintereindander.
Ich kann es leider nicht schreiben weil Nickles es nicht richtig darstellt.
----------------------------------------
Verdammt ich kann das hier nicht posten weil Nickles alles interpretieren will ... Haaaaalllo Nickles das hier ist das Coder-Forum, hier macht sich das echt schlecht mit dem interpretieren zwecks posten von Demo-Code.. Kann so ein VIP den Hr. Wölfer mal anstossen das hier sowas unpassend ist.
Kannst du ihn per e-mail schicken? X-ten@web.de
Erfahrungsgemäßt bekommt man hier von höchster Stelle eins auf den Deckel wenn man wagt Kritik, auch konstruktive, anzubringen. Ist mir schon oft genug passiert :-)
Zurück zum Thema:
#include <windows.h>
#include <stdlib.h>
void DeleteDirectory( char* dir, int delSubs = 0 );
void DeleteDirectory( char* dir, int delSubs)
{
char* all = new char[strlen(dir)+3];
strcpy(all, dir);
if (dir[strlen(dir)-1] != '\\\\' ) strcat(all, "\\\\");
strcat(all, "*");
WIN32_FIND_DATA s;
HANDLE h = FindFirstFile( all, &s );
if (h == INVALID_HANDLE_VALUE) return;
do
{
if ( s.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if ((s.cFileName[ strlen( s.cFileName )-1] != '.' ) && delSubs )
{
DeleteDirectry( s.cFileName , 1 );
RemoveDirectory( s.cFileName );
}
}
else
{
DeleteFile( s.cFileName );
}
}
while( FindNextFile( h, &s) );
FindClose( h );
delete[] all;
}
Ich hab den Code nicht getestet, sollte aber funktionieren. Ruf DeleteDirectory( "C:\\\\temp", 1 ); auf und beschwer dich nachher nicht wenn alles in Temp weg ist. Falls der Code aus Gründen die sich mir entziehen auf deiner Platte randaliert ist das nicht mein Problem.