#include "stdafx.h"
#include "windows.h"
#include "string.h"
#include "time.h" //clock()
#define MAX 1000
int level = 0;
int filecount = 0;
void Findfile(char * filepath,char *destpath);
int _tmain(int argc, _TCHAR* argv[])
{
clock_t start,end;
char filepath[MAX] = {"d://ftpserver//"};
char destpath[MAX] = {"d://stone//"};
level = 0;
filecount = 0 ;
start = clock();
::Findfile(filepath,destpath);
end = clock();
printf("%s file count %d/n",filepath,filecount);
printf("Interval = %.2f seconds/n",(double)(end-start)/(double)CLOCKS_PER_SEC);
getchar();
return 0;
}
void Findfile(char * filepath,char *destpath)
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
char temppath[MAX];
char tempfile[MAX];
char filename[MAX];
char destfile[MAX];
char newpath[MAX];
++level;
strcpy(tempfile,filepath);
strcpy(filename,filepath);
strcpy(destfile,destpath);
strcat(tempfile,"*");
if ( hFind = FindFirstFile(tempfile, &FindFileData) )
{
if ( strcmp( FindFileData.cFileName,".") && strcmp( FindFileData.cFileName,"..") )
{
filename[0]='/0';
destfile[0]='/0';
strcat(filename,filepath);
strcat(destfile,destpath);
strcat(filename,FindFileData.cFileName);
strcat(destfile,FindFileData.cFileName);
printf ("The file found is %s/n", filename);
CopyFile(filename,destfile,false);
++filecount;
}
}
else
{
return ;
}
while( FindNextFile(hFind,&FindFileData) )
{
if ( FindFileData.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY && strcmp( FindFileData.cFileName,".")
&& strcmp( FindFileData.cFileName,"..") )
{
filename[0]='/0';
destfile[0]='/0';
strcat(filename,filepath);
strcat(destfile,destpath);
strcat(filename,FindFileData.cFileName);
strcat(destfile,FindFileData.cFileName);
printf ("The file found is %s/n", filename);
CopyFile(filename,destfile,false);
++filecount;
}
else if ( strcmp( FindFileData.cFileName,".") && strcmp( FindFileData.cFileName,"..") )
{
temppath[0] = '/0';
newpath[0]='/0';
strcpy(newpath,destpath);
strcat(temppath,filepath);
strcat(temppath,FindFileData.cFileName);
strcat(temppath,"//");
strcat(newpath,FindFileData.cFileName);
strcat(newpath,"//");
::CreateDirectory(newpath,NULL);
::Findfile( temppath,newpath);
}
}
--level;
FindClose(hFind);
}