#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;
}