Wie kann ich kopieren Sie eine Datei von einem Verzeichnis in ein anderes in c/c++
Ich bin auf der Suche nach einem einfachen Beispiel, wie das kopieren einer Datei von einem Verzeichnis in ein anderes in C. Das Programm sollte nur verwendet werden, cross-Plattform-Funktionen, die systemeigene C.
- "Native" - Funktionen sind in etwa das Gegenteil von "cross-Plattform" - Funktionen. Native Funktionen sind diejenigen, die den "nativen" OS, und daher spezifisch für ihn. "Cross-Plattform" - Funktionen sind überall verfügbar, aufgrund der Tatsache, gebaut auf diese systemeigenen Funktionen.
- Sie können
#ifdef
#else
und#endif
diejenigen, die pre-processing-Blöcke zu nennen-Plattform-Funktionen und lassen compiler entscheiden, welche zu nennen. - Gut gesagt, aber ich denke, ab der eine Frage mit "ich Suche" deutet auf eine nicht-muttersprachliche Englisch-Sprecher. :-/ Ich selbst interpretiere den OP ' s Sinne war, dass er/Sie wollte eine Bibliothek, die unter der Haube ruft "Datei kopieren" Eingeborenen. Es wäre so auszuschließen, die (leider) von Ihnen positiv bewertet werden die Antworten hier über die Einführung einer eigenen Kopie auf nur einer Datei zu Lesen und zu schreiben, um anderen...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine einfache ungetestet C-Programm, das ist, was Sie brauchen:
Ich bin sicher, Sie können es tun!
@Mu Qiao erwähnt
boost::filesystem
. Speziell für Sie wollen würde, um zu sehen Beispiele für diecopy_file
, aber Sie können kopieren, Verzeichnisse zu.Wenn Sie interessiert sind, bekommen Lust mit asynchronen I/O, mein Eindruck ist, dass
boost::asio
hat interessante Implementierungen, die die Vorteile der Plattform, die Fähigkeiten zu lassen, Sie nutzen die CPU während der Wartezeit für den Datenträger, genauso, wie es für das Netzwerk:Wie zum ausführen von Cross-Plattform-Asynchrone Datei I/O in C++
(Hinweis: in letzter Zeit das asio-Bibliothek wurde in den Sinn kommen in letzter Zeit eine Menge, aber ich habe immer zu bieten haben, um die Verzichtserklärung, die ich haven ' T verwendet es in einem Projekt und haben keine Ahnung, was seine Grenzen sind. So nehmen Sie meine erwähnen, der es mit einem Körnchen Salz.)
Gibt es andere cross-Plattform-Bibliotheken, die diese Art von Funktionalität, wenn Sie bereit sind zu tun, das buy-in, immer eine Frage des Geschmacks und der Bedürfnisse. Ich selbst wie Qt für eine Menge von Gründen, und es geschieht zu bieten
QFile::copy
Methode:http://doc.qt.nokia.com/latest/qfile.html#copy
Andere alternative ist so etwas wie dieses:
...
source
von"foo.txt bar.txt"
und eindest
von"& del *.*"
...das kaufmännische und-Zeichen so dass es die Kette der Befehle zusammen als"copy foo.txt bar.txt & del *.*"
. Denken Sie immer daran Bobby Tabellen!!! xkcd.com/327boost::filesystem::copy_file
ist nicht Gegenstand dieser Anliegen. Und ich nur erwähnt, weil Windows deinen ersten string Beispiel warCOPY_STR "copy %s %s"
(statt, sagenCOPY_STR "cp %s %s"
). Die gleiche Art von Unfug ist möglich, wenn Sie verwenden diese Klasse von Verfahren, die in jedem OS, wenn Sie jemals eine Zeichenfolge übergeben, die kommt aus einer Quelle neben einer fest codierten Wert in Ihrem Programm. Bereinigung wird ein Problem, und oft ein sehr ernstes.Ich einige änderungen vorgenommen @te7 Antwort kopieren nur eine Datei in einen anderen Ordner auf dem MAC. Ich habe versucht, zu ändern, seinen code einfach kopieren Sie eine Datei, aber es war teilweise schreiben der Datei zum Ziel. Also ich benutze unterschiedliche code für Datei Lesen/schreiben