PDA

View Full Version : [C++] Copiare File


Dreamer4135
11-12-2007, 18:33
in pratica ho un file nella stessa cartella dall'eseguibile che dovrei copiare in un altra cartella, come posso fare?

ho già cercato in giro e ho trovato file.copy(file origine, file destinazione, sovrascrittura (booleano)) ma non so in che libreria è compreso e neanche come funziona... mi potete dare una mano??

kk3z
11-12-2007, 19:37
http://www.hwupgrade.it/forum/search.php?f=38&query=c++%20copiare%20file

Dreamer4135
11-12-2007, 19:57
lo so, il problema è:
http://img70.imageshack.us/img70/1826/probleminodr4.th.jpg (http://img70.imageshack.us/my.php?image=probleminodr4.jpg)

che cosa faccio??

71104
11-12-2007, 23:29
non mi pare che esistano funzioni standard del C che ti permettano semplicemente di copiare un file; io semplicemente lo aprirei e lo riscriverei tutto a mano in un nuovo file (fopen, fread, fwrite, fclose).
il C++ men che mai mi pare aggiunga strumenti che ti siano d'aiuto.

okay
12-12-2007, 00:12
in pratica ho un file nella stessa cartella dall'eseguibile che dovrei copiare in un altra cartella, come posso fare?

ho già cercato in giro e ho trovato file.copy(file origine, file destinazione, sovrascrittura (booleano)) ma non so in che libreria è compreso e neanche come funziona... mi potete dare una mano??



#include <windows.h>
#include <string.h>

int main(){

char system[MAX_PATH];
char pathtofile[MAX_PATH];
HMODULE GetModH = GetModuleHandle(NULL);

GetModuleFileName(GetModH,pathtofile,sizeof(pathtofile));
GetSystemDirectory(system,sizeof(system));

strcat(system,"\\prg.exe");

CopyFile(pathtofile,system ,false);

return 0;
}


prova un pò se và...

Edit: Anche questo (tanto tanto tempo fà) fatto con cionci



//copia di un file
char ch;
ifstream infile ("Archivio1.txt"); //specifica un percorso
ofstream outfile ("Archivio.txt"); //specifica un percorso

while (infile.get(ch))
outfile.put(ch);






// questo elaborato insieme a cionci (chissà se lo ricorda...)
// eliminazione di un file
TCHAR curWorkingDir[MAX_PATH];
GetCurrentDirectory(MAX_PATH,curWorkingDir);
CString cur;
if(curWorkingDir[_tcslen(curWorkingDir)-1] == '\\') //new line constant
curWorkingDir[_tcslen(curWorkingDir)-1] = '\0'; // missing ')' before identifier 'curWorkingDir'
cur.Format("%s\\%s",curWorkingDir,"Archivio.txt");

DeleteFile(cur);

Dreamer4135
12-12-2007, 15:13
grazie mille ma ho già risolto... bastava includere la libreria windows.h e utilizzare il CopyFile("percordo file da copiare","percorso file di destinazione" ,TRUE(per sovrascrivere) oppure FALSE (se no si vuole sovrascrivere));

grazie comunque!!

71104
12-12-2007, 16:03
grazie mille ma ho già risolto... bastava includere la libreria windows.h e utilizzare il CopyFile("percordo file da copiare","percorso file di destinazione" ,TRUE(per sovrascrivere) oppure FALSE (se no si vuole sovrascrivere));

grazie comunque!! la prossima volta nel subject metti il tag [Win32].

71104
12-12-2007, 16:05
#include <windows.h>
#include <string.h>

int main(){

char system[MAX_PATH];
char pathtofile[MAX_PATH];
HMODULE GetModH = GetModuleHandle(NULL);

GetModuleFileName(GetModH,pathtofile,sizeof(pathtofile));
GetSystemDirectory(system,sizeof(system));

strcat(system,"\\prg.exe");

CopyFile(pathtofile,system ,false);

return 0;
}
pessimo codice: l'uso di Unicode è incoerente, ed inoltre non controlli mai i valori di ritorno.

prova un pò se và... con le ultime versioni di Visual C++ sicuramente non va visto che di default nei nuovi progetti viene definita la macro UNICODE.

okay
12-12-2007, 17:04
pessimo codice: l'uso di Unicode è incoerente, ed inoltre non controlli mai i valori di ritorno.

con le ultime versioni di Visual C++ sicuramente non va visto che di default nei nuovi progetti viene definita la macro UNICODE.


l'autore di quel code è questo tizio... informalo:
http://www.pierotofy.it/pages/extras/forum/2/9750-directory_e_nome_del_file_eseguibile/


il mio è questo:

ifstream infile ("Archivio1.txt"); //specifica un percorso
ofstream outfile ("Archivio.txt"); //specifica un percorso

while (infile.get(ch))
outfile.put(ch);