zoukankan      html  css  js  c++  java
  • 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.
    ");
                return -4;
            }
            len += bytes_out;
            printf("copying file .... %d bytes copy
    ", 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;
    }
  • 相关阅读:
    uni-app 版本更新控制
    Chrome为什么打开一个页面,会有4个进程?
    vue 导航栏滚动吸顶
    vue 运行后, sass 报错
    HAProxy——HAProxy、Nginx、LVS优势劣势 (转)
    HAProxy——关于配置的备份
    RabbitMQ——用HAProxy实现负载均衡
    docker——Docker常见问题总结 (转)
    docker——docker容器内存和CPU使用限制
    docker——用docker-compose安装redis
  • 原文地址:https://www.cnblogs.com/autumoonchina/p/7064895.html
Copyright © 2011-2022 走看看