Dateien eines Ordners überschreiben
-
Hallo,
ich will alle Dateien eines Ordners ermitteln und diese überschreiben.
Hier ein Snippet, da sollte der fehler stecken:entry = readdir(hdir); //Ordner nicht beachten entry = readdir(hdir); //Überordner nicht beachten do { entry = readdir(hdir); if (entry) { datei.open(entry->d_name, ios_base::out); //Hier sollte der Fehler sein //datei.open("test.dat", ios_base::out); <-Das Funktioniert datei<<"Wird nicht mehr verwendet."; datei.close(); cout << entry->d_name <<" wird ueberschrieben"<< endl; } } while (entry);
Wird zwar einwandfrei compiliert, die Dateien werden aber bei der ersten Methode nicht überschrieben.
Wie kann ich die einzelnen Dateinamen richtig übergeben ?Thx schonmal für die Hilfe!
-
Vielleicht solltest du mal nachsehen, was für ein Wert in d_name drinsteht - möglicherweise legst du gerade Dateien in einem ganz anderen Verzeichnis an (aus der Beschreibung zu man: readdir() und man: dirent geht nicht hervor, ob die Dateinamen inklusive Pfad eingetragen werden)
Btw würde ich mich auch nicht darauf verlassen, daß "." und ".." die ersten Einträge sind, die geliefert werden.
-
CStoll schrieb:
Vielleicht solltest du mal nachsehen, was für ein Wert in d_name drinsteht - möglicherweise legst du gerade Dateien in einem ganz anderen Verzeichnis an (aus der Beschreibung zu man: readdir() und man: dirent geht nicht hervor, ob die Dateinamen inklusive Pfad eingetragen werden)
Btw würde ich mich auch nicht darauf verlassen, daß "." und ".." die ersten Einträge sind, die geliefert werden.
Hast recht
ich hab mal in dem ordner der .exe nachgeschaut. Da hats mir die ganzen Dateien angelegt. Danke für die Hilfe.
Der überarbeitete Code:
... entry = readdir(hdir); //Ordner nicht beachten entry = readdir(hdir); //Überordner nicht beachten do { entry = readdir(hdir); if (entry) { char buf[1024]; sprintf(buf, "%s\\%s", path, entry->d_name); cout<<buf<<" ueberschreiben"<<endl; datei.open(buf, ios_base::out); datei<<"Wird nicht mehr verwendet"; datei.close(); } } while (entry); ...