C++ 递归方式复制文件夹目录
2013-04-10 20:01
176 查看
#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>
usingnamespacestd;
#defineBUF_SIZE256
intcopyFile(constchar*pSrc,constchar*pDes)
{
FILE*in_file,*out_file;
chardata[BUF_SIZE];
size_tbytes_in,bytes_out;
longlen=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("Fatalwriteerror.\n");
return-4;
}
len+=bytes_out;
printf("copyingfile....%dbytescopy\n",len);
}
fclose(in_file);
fclose(out_file);
return1;
}
/*********************************************************************
功能:复制(非空)目录
参数:pSrc,原目录名
pDes,目标目录名
返回:<0,失败
>0,成功
作者:liuyuanan 2013-04-10
*********************************************************************/
intcopyDir(constchar*pSrc,constchar*pDes)
{
if(NULL==pSrc||NULL==pDes) return-1;
mkdir(pDes);
chardir[MAX_PATH]={0};
charsrcFileName[MAX_PATH]={0};
chardesFileName[MAX_PATH]={0};
char*str="\\*.*";
strcpy(dir,pSrc);
strcat(dir,str);
//首先查找dir中符合要求的文件
longhFile;
_finddata_tfileinfo;
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);
return1;
}
return-3;
}
intmain(intargc,char*argv[])
{
std::cout<<"pleasewait...";copyDir("D:\\project.KeyManagerClient","D:\\project.KeyManagerClient-副本");
std::cout<<"ok";
return0;
}
相关文章推荐
- C++ 递归方式删除非空目录文件夹
- php通过递归方式复制目录和子目录的方法
- php通过递归方式复制目录和子目录的方法
- C#文件操作源码 递归复制一个目录 递归删除文件 和 文件夹
- C#文件操作源码 递归复制一个目录 递归删除文件 和 文件夹
- 黑马程序员——java-IO流中复制单击目录以及使用递归的方式复制多级目录小结
- C# 递归复制文件夹及文件夹目录下的文件
- java单个文件复制,递归删除、复制目录下所有内容,递归创建文件夹,.7z文件解压等
- Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
- Java基础---Java---IO流-----File 类、递归、删除一个带内容的目录、列出指定目录下文件夹、FilenameFilte
- U盘中删除文件时提示:无法删除空文件夹,提示该目录不是空的(不能删除、不能复制)
- c++ 遍历目录下文件和文件夹
- 用脚本提取一个文件夹内的某些文件,并且将文件复制到制定目录下
- Java新建目录、新建文件、删除文件、删除文件夹、删除文件夹里面的所有文件、复制整个文件夹内容
- PHP递归复制、移动目录的自定义函数分享
- TreeSize Free-查看每个文件夹的大小(目录树方式)
- Android递归方式删除某文件夹下的所有文件
- linux复制指定目录下的全部文件到另一个目录中,linux cp 文件夹
- python 实现目录的递归复制
- php递归方式遍历目录