PDA

View Full Version : [C++] Copiare file


Sbrocca88
29-11-2010, 16:22
Ciao a tutti.
Io vorrei copiare un file da una cartella in un altra.
Vorrei copiare il file utilizzando un percorso assoluto in modo che, successivamente, il mio programma possa essere portabile.
Io ho fatto
chdir(miacartella);
CopyFile(".\\Common\\ita.dfa", "ita.dfa",TRUE);
Questo comando dice: dalla cartella in cui è salvato il mio file .cpp, spostati nella cartella common, copia il file ita.dfa e incollalo nella directory miacartella.

il mio programma non fa assolutamente niente.
Chi mi può aiutare?!
Un saluto

Supdario
29-11-2010, 17:04
Ciao a tutti.
Io vorrei copiare un file da una cartella in un altra.
Vorrei copiare il file utilizzando un percorso assoluto in modo che, successivamente, il mio programma possa essere portabile.
Io ho fatto
chdir(miacartella);
CopyFile(".\\Common\\ita.dfa", "ita.dfa",TRUE);
Questo comando dice: dalla cartella in cui è salvato il mio file .cpp, spostati nella cartella common, copia il file ita.dfa e incollalo nella directory miacartella.

il mio programma non fa assolutamente niente.
Chi mi può aiutare?!
Un saluto

CopyFile è una funzione di windows.h, quindi dubito in ogni caso che il tuo programma sia portabile. :asd:

Potresti provare così:

ifstream in("ita.dfa", ios::binary);
ofstream out("Common\\ita.dfa", ios::binary);
out << in.rdbuf();
in.close();
out.close();


Non so dirti se funziona, al massimo prova a creare prima la directory Common, usando la funzione mkdir.

!fazz
29-11-2010, 17:06
oppure soluzione brutale

cmd("cp dest sorg");

Sbrocca88
29-11-2010, 17:18
Lo so.:stordita:
Però purtroppo devo realizzarlo sotto windows.
il codice che mi hai dato non mi da errori. Però non fa niente :(
Altre idee?!
Il comando suggerito da fazz mi da errore.
Io l'ho scritto così


cmd("cp .\\Common\\ita.dfa ita.dfa")

Vi ringrazio...

Supdario
29-11-2010, 17:51
Quel comando è per linux, prova a sostituirlo con:

system("copy ita.dfa Common\\");

!fazz
30-11-2010, 23:57
ho cannato allegramente

il comando è system scusa, ho scritto di fretta

prova con

system ("cp c:\\dir1\\dir2\\file1.est c:\\dir1\\dir2\\file2.est );

tuccio`
01-12-2010, 10:42
l'errore su CopyFile credo sia che devi specificare il path completo, in caso dovresti usare GetCurrentDirectory

Tommo
01-12-2010, 11:09
Non so dirti se funziona, al massimo prova a creare prima la directory Common, usando la funzione mkdir.

Dovrebbe funzionare però è lentissimo, specie nella copia da HD a HD.
La cosa migliore è usare direttamente l'API del SO, in questo caso.
Ci starebbero Poco o Boost o altri per wrapparle, ma non credo che per un esercizio te li facciano usare.