//测试工具
#include <unistd.h>
#include <cstring>
#include <cstdlib>
#include <string>
#include <sys/socket.h>
#include <netinet/tcp.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <dirent.h>
#include <sys/time.h>
#include <assert.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <assert.h>
using namespace std;
void Path_AddSlash(char* pszPath)
{
assert(pszPath!=NULL);
#ifdef WIN32
PathAddBackslash(pszPath);
#else
int nLen = strlen(pszPath);
if (pszPath[nLen-1]!='/')
{
pszPath[nLen] = '/';
pszPath[nLen+1] = '\0';
}
#endif
}
#ifndef WIN32
unsigned int GetTickCount()
{
struct timeval tv;
if(gettimeofday(&tv, NULL)!= 0)
return 0;
return (tv.tv_sec * 1000)+(tv.tv_usec/1000);
}
#endif
string Path_GetBaseName(const string& strPath)
{
const char* pszPath = strPath.c_str();
#ifdef WIN32
char name[256];
char ext[256];
_splitpath(pszPath,NULL,NULL,name,ext);
strcat(name,ext);
return string(name);
#else
return string(basename(pszPath));
#endif
}
// 目录是否存在
bool IsDirectory(char *p_dir)
{
DIR *dir = NULL;
dir = opendir(p_dir);
if( NULL == dir )
{
return false;
}
else
{
closedir(dir);
return true;
}
}
long GetLocalFileSize(const char* szFileName)
{
struct stat f_stat;
if (stat(szFileName, &f_stat) == -1) {
return -1;
}
return (long)f_stat.st_size;
}
int main(int argc,char* argv[])
{
char szCmd[512];
char szDstFileName[256];
char szDir[256];
if (argc!=5)
{
printf("Usage:%s <filename> <dirpath> <begin> <end> \r\n",argv[0]);
return 255;
}
char* pszFileName = argv[1];
int nBegin = atoi(argv[3]);
int nEnd = atoi(argv[4]);
strcpy(szDir,argv[2]);
if (GetLocalFileSize(pszFileName) < 0)
{
printf("error:<%s> is not exist \r\n",pszFileName);
return 255;
}
if (!IsDirectory(szDir))
{
printf("error:<%s> is not directory \r\n",szDir);
return 255;
}
unsigned int dwBeginTime = GetTickCount();
Path_AddSlash(szDir);
char* pszExtName = strchr(pszFileName,'.');
if (pszExtName==NULL)
{
pszExtName = (char*)"";
}
int ret = 0;
int i = 0;
for (i=nBegin;i<nEnd;i++)
{
sprintf(szCmd,"cp %s %s%06d%s",pszFileName,szDir,i,pszExtName);
puts(szCmd);
ret = system(szCmd);
if (ret!=0)
{
break;
}
}
unsigned int dwEndTime = GetTickCount();
puts("\r\n-------------------------------------------------------------------");
printf("from:%d,to:%d \r\n",nBegin,nEnd);
printf("begin time:%u,end time:%u \r\n",dwBeginTime,dwEndTime);
printf("elapse ms:%u \r\n",dwEndTime - dwBeginTime);
return 0;
}