Datei in Unterordner erstellen mit ofstream funktioniert nur beschränkt...
-
Hallo,
wenn ich eine Datei in einem Ordner erstellen will, klappt das nur, wenn der Ordner schon existiert:
ofstream f ("dir\\out.txt"); // nur wenn Ordner dir existiert
Muss man das anders machen, oder den Ordner davon unabhängig selbst erstellen? Und wie kann ich das machen? Bietet <fstream> da etwas?
mfG
-
soweit ich weiss kann das fstreaam nicht
-
Hmm... Und wie kann ich das dann machen?
-
system("mkdir dir"); ofstream f ("out.txt");
/EDIT: dürfte unter unix/linux auch gehen
-
Danke, der system-Aufruf funktioniert, allerdings muss man der Ordner trotzdem noch mitangeben:
system ("mkdir dir"); ofstream f ("dir\\out.txt");
aber das nur nebenbei...
mfG
-
entschuldigung, das habe ich nicht bedacht... ist ja klar, sonst würde die datei im ordner ..\dir erstellt werden... wie dumm von mir
-
Gibts vielleicht noch ne Möglichkeit, ohne das sich kurz ne Konsole auftut?
mfG
-
NAME
mkdir - create a directorySYNOPSIS
#include <sys/stat.h>
#include <sys/types.h>int mkdir(const char *pathname, mode_t mode);
DESCRIPTION
mkdir attempts to create a directory named pathname.
[snip]
CONFORMING TO
SVr4, POSIX, BSD, SYSV, X/OPEN. SVr4 documents additional EIO, EMULTI-
HOP and ENOLINK error conditions; POSIX.1 omits ELOOP.
[snip]
-
Die Funktion mkdir() hab ich auch probiert, hab auch ne Parameterinfo bekommen, aber kein Header gefunden, in dem er die Funktion findet... Und deinen Snip versteh ich nich...
Ich hab auch noch ne neue Frage, wo wir beim Ordner erstellen sind: Wie kann ich einen Ordner bzw. Dateien löschen?
mfG
-
ich glaube das war für unix/linux.
win:
#include <dos.h> //... //das gibts auch: chdir(".."); //z.b. mkdir("verzeichnis");
-
Oder du machst es mit boost::filesystem . Auf www.boost.org in der Dokumentation findest du Rat, wie man es benutzt.
-
<dos.h> scheint auch nicht zu funktionieren, ich krieg immernoch den fehler, mkdir unbekannter bezeichner... und löschen geht gar nich?
-
So, hab jetzt was gefunden, was bei mir funktioniert: int _mkdir( const char *dirname) mit dem header <direct.h>... Danke an alle! _rmdir löscht nen Ordner, dieser muss allerdings leer sein. Eigentlich geht es mir auch nur um das leeren eines Ordners. Falls er nämlich nicht existiert, soll er erstellt werden (gelöst), und wenn er existiert, soll er geleert werden (noch nicht gelöst). Ich dachte also, ich lösche den Ordner dann, um ihn wieder neu zu erstellen, aber wenn ich ihn eh leeren muss, muss ich ihn auch nicht löschen etc. Wie ich die Dateien im Ordner durchiteriere, weiß ich, nicht aber, wie ich ne Datei mit Wissen ihres Namens löschen kann. Bin dankbar für jeden Ansatz...
mfG
-
Oh man, der reinste Horror was hier abgeht. Keiner hat nen Plan, bis auf ChrissiB. Die Boost-Library ist für einen C++ Programmierer unverzichtbar. Wer diese immer noch nicht installiert hat, möge dies bitte nachholen.
Und benutzt boost::filesystem::create_directory() dann funktioniert es auch mit dem Erstellen von Verzeichnissen.
Alles andere sind Krüppellösungen.
-
Naja, ich hab jetzt auch das löschen geschafft, mit remove (const char *filename)... Werd mir die Boost-Library mal ansehen, hab jetzt aber leider nicht die Zeit, mich noch wo einzuarbeiten... Trotzdem danke...
mfG