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

 

posted @ 2017-06-22 14:42  秋月的私语  阅读(670)  评论(0编辑  收藏  举报