CopyDir
#include <stdlib.h> #include <direct.h> #include <string.h> #include <io.h> #include <stdio.h> #include <iostream> #include <conio.h> #include <process.h> #include <windows.h> #define BUF_SIZE 256 int copyFile(const char * pSrc, const char *pDes) { FILE *in_file, *out_file; char data[BUF_SIZE]; size_t bytes_in, bytes_out; long len = 0; if ((in_file = fopen(pSrc, "rb")) == NULL) { perror(pSrc); return -2; } if ((out_file = fopen(pDes, "wb")) == NULL) { perror(pDes); return -3; } while ((bytes_in = fread(data, 1, BUF_SIZE, in_file)) > 0) { bytes_out = fwrite(data, 1, bytes_in, out_file); if (bytes_in != bytes_out) { perror("Fatal write error.\n"); return -4; } len += bytes_out; printf("copying file .... %d bytes copy\n", len); } fclose(in_file); fclose(out_file); return 1; } /********************************************************************* 功能:复制(非空)目录 参数:pSrc,原目录名 pDes,目标目录名 返回:<0,失败 >0,成功 作者:liuyuanan 2013-04-10 *********************************************************************/ int copyDir(const char * pSrc, const char *pDes) { if (NULL == pSrc || NULL == pDes) return -1; _mkdir(pDes); char dir[MAX_PATH] = { 0 }; char srcFileName[MAX_PATH] = { 0 }; char desFileName[MAX_PATH] = { 0 }; char *str = "\\*.*"; strcpy(dir, pSrc); strcat(dir, str); //首先查找dir中符合要求的文件 long hFile; _finddata_t fileinfo; if ((hFile = _findfirst(dir, &fileinfo)) != -1) { do { strcpy(srcFileName, pSrc); strcat(srcFileName, "\\"); strcat(srcFileName, fileinfo.name); strcpy(desFileName, pDes); strcat(desFileName, "\\"); strcat(desFileName, fileinfo.name); //检查是不是目录 //如果不是目录,则进行处理文件夹下面的文件 if (!(fileinfo.attrib & _A_SUBDIR)) { copyFile(srcFileName, desFileName); } else//处理目录,递归调用 { if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0) { copyDir(srcFileName, desFileName); } } } while (_findnext(hFile, &fileinfo) == 0); _findclose(hFile); return 1; } return -3; }