Dateien kopieren (einfaches Setup...)
-
Hi Leute;
ich wollt so eine Art Setup-Datei schreiben. Aus einer *.zip soll das Programm (in der *.zip enthalten) die Dateien in einen Zielordner kopieren. Ich hab schon ein Programm mit dem man Daten kopieren kann:

//… ifstream quelle; string Quelldateiname; cout << „Quelle?“; cin >> Quelldateiname //Abfrage entfällt dann beim eigentlichen Programm (siehe Text) quelle.open (Quelldateiname.c_str(), ios::binary|ios::in); //quelle öffnen if(!quelle) { cerr << Quelldateiname << „ kann nicht geöffnet werden!\n!“; exit(-1); } //Fehlerabfrage string Zieldateiname; cout << „Zieldatei?“; cin >> Zieldateiname; //zieldateiabfrage ofstream ziel(Zieldateiname.c_str(), ios::binary|ios::out) //Fehlerabfrage, Schema siehe oben char ch; while(quelle.get(ch)) ziel.put (ch); //kopieren(die Deklarationen, Definitionen und Compileranweisungen am Anfang hab ich hier weggelassen)
Für die quelle würde ich natürlich die *.zip angeben.Fragen:

1. Mit diesem Code lassen sich Textdateien kopieren, was müsste ich (bei "ios::binary|ios::in" bzw. "...out", denke ich
) schreiben um auch Bilder zb: *.jpg kopieren zu können? Oder müsste ich den kompletten Code verändern?2. Muss ich „zeichenweise kopieren“ oder geht das auch noch schneller?
3. Ich weiß wie der Zielordner heißt, aber nicht wo er liegt. Kann ich dann ein automatisches Setup schreiben, das den Zielordner sucht, oder ist das zuviel Aufwand und ich lass den Zielordner lieber eingeben?
thx
schon mal für die Antworten 
-
</Exit> schrieb:
1. Mit diesem Code lassen sich Textdateien kopieren, was müsste ich (bei "ios::binary|ios::in" bzw. "...out", denke ich
) schreiben um auch Bilder zb: *.jpg kopieren zu können? Oder müsste ich den kompletten Code verändern?Erstmal sollte man wissen was ios::binary macht. Wo hast du das denn abgeschrieben? Immerhin kensnt du den Unterscheid zwischen den Modi nicht
</Exit> schrieb:
2. Muss ich „zeichenweise kopieren“ oder geht das auch noch schneller?
Ist im Grunde wenig relevant, die Syscalls werden von den Streams gebuffert. Und die sind am teuersten.
</Exit> schrieb:
3. Ich weiß wie der Zielordner heißt, aber nicht wo er liegt. Kann ich dann ein automatisches Setup schreiben, das den Zielordner sucht, oder ist das zuviel Aufwand und ich lass den Zielordner lieber eingeben?
Standard C++: Was ist ein Ordner?
-
Hallo zusammen,
wenn du wirklich ein komplettes Installationsprogramm schreiben möchtest (weswegen auch immer - es gibt doch dpkg, apt und apt-get :), würde ich dir raten auf bestehende mittel zurückzugreifen (z.B. kannst du cp zum Kopieren verwenden anstelle deiner eigenen Implementierung).
Grüße
Martin
-
1. binary sagt es ja schon: halt binär! => für *.jpg dürfte das der falsche Typ sein....
(bin noch TOTAL-Anfänger und frag, weil ich nicht WEIß was ich da brauch!)
Ich hab mir ein Buch für C++ gekauft(bin aber noch nicht durch). Der Ausdruck wird dort verwendet (eben für das erwähnte Programm) aber weitere Modi werden nicht angegeben(erst weiter hinten). Deshalb frag ich ja welchen ich brauch!
2. Sry, hab ich nicht verstanden. Meinst du mit "am teuersten" dass sie viel Speicher brauchen?
3. Mit Zielordner mein ich einen Ordner im Explorer XD. Hab aber (noch) keine Ahnung wie ich den finden könnte. Die Möglichkeit die ich kenne, ist halt von Benutzer angeben lassen (wie hier). Ich will aber (wenn möglich), dass mein Programm ihn findet und dann dort die Dateien hineinkopiert.
hoffentlich sind meine Fragen jetzt klarer

thx für Antworten!
-
@ lucky_tux
wie sieht dann so ein "bestehendes mittel" aus bzw. wo bekomm ich genau das, das ich brauch?
-
UPS, sieht so aus als hätte ich ios::binary doch nicht ganz verstanden.... 
hab nochma genau nachgeschaut. JETZT hab ich es gecheckt XD (hoffe ich)bleibt nur noch Frage 3 offen! Kann mir da jemand helfen plz?

thx
-
Hallo
3. Mit Zielordner mein ich einen Ordner im Explorer XD. Hab aber (noch) keine Ahnung wie ich den finden könnte. Die Möglichkeit die ich kenne, ist halt von Benutzer angeben lassen (wie hier). Ich will aber (wenn möglich), dass mein Programm ihn findet und dann dort die Dateien hineinkopiert.
Ja nach welchen Kriterien soll den das Programm einen passenden Ordner finden? Der Explorer ist ein anderes Programm, dadrin gibt es keine Ordner
Es zeigt nur welche an.bis bald
akari
-
Benutz Boost.Filesystem.
Oder, noch besser, verzichte auf C++ in diesem Zusammenhang und verwende eine Skriptsprache.
-
thx für die Antworten.... ich werd mal schaun wie ich des mach.