bool filewrite_str(LPCTSTR filepath,LPCTSTR str);
bool foldercopy(LPCSTR flodersource,LPCSTR folderobject);
bool isfolder(LPCTSTR strfloder);
bool createfolder(LPCTSTR strfolder);
int countsubfolder(LPCTSTR strfolder);
bool folderdelete(LPCSTR strfolder);
void str_huanhang(LPCTSTR tmp,char *str);
void str_huanhang(LPCTSTR tmp,char *str)
{
int i=0;
int j=0;
while(tmp[i]!='\0')
{
if(tmp[i]=='\r')
{
str[j]='\r';
j++;
str[j]='\n';
}else
{
str[j]=tmp[i];
}
i++;
j++;
}
str[j]='\0';
return;
}
//将字符串写入指定文件
bool filewrite_str(LPCTSTR filepath,LPCTSTR str)
{
FILE *fw=fopen(filepath,"w");
if(!fw)
return false;
char *strtmp=(char *)malloc(strlen(str)+20);
memset(strtmp,0,sizeof(strtmp));
str_huanhang(str,strtmp);
fwrite(strtmp,sizeof(char),strlen(strtmp),fw);
fclose(fw);
return true;
}
//将文件读到一缓冲区里,
bool fileread_str(LPCTSTR filepath,char str[])
{
FILE *fw=fopen(filepath,"r");
if(!fw)
return false;
fread(str,sizeof(char),1024,fw);
fclose(fw);
return true;
}
//文件夹的复制(包括子文件的复制)
bool foldercopy(LPCSTR foldersource,LPCSTR folderobject)
{
SHFILEOPSTRUCT op;
LPCSTR strFrom=foldersource;
LPCSTR strTo=folderobject;
op.hwnd = NULL;
op.pFrom = strFrom ;
op.pTo = strTo ;
op.fFlags = FOF_WANTMAPPINGHANDLE|FOF_NOCONFIRMATION|FOF_SILENT;
op.wFunc = FO_COPY;
if(::SHFileOperation(&op))
{
return false;
}
return true;
};//第一个参数需谨慎使用,不能用CString类型,有时不能复制所有的子目录???奇怪??
//判断文件夹是否存在
bool isfolder(LPCTSTR strfolder)
{
if(!::SetCurrentDirectory(strfolder))
{
return false;
}
return true;
};
//创建一个新的文件夹
bool createfolder(LPCTSTR strfolder)
{
if(isfolder(strfolder))
return true;
if(::CreateDirectory(strfolder,NULL))
return true;
return false;
};
//统计一文件夹中有多少子文件夹
int countsubfolder(LPCTSTR strfolder)
{
int i=0;
WIN32_FIND_DATA fin;
HANDLE hfile=::FindFirstFile(strfolder,&fin);
DWORD errorcode = 0;
while(hfile!=INVALID_HANDLE_VALUE&&errorcode!=ERROR_NO_MORE_FILES)
{
i++;
if(!::FindNextFile(hfile,&fin))
errorcode=GetLastError();
}
::FindClose(hfile);
if(i>2)
return i-2;
return 0;
}
//删除文件夹
bool folderdelete(LPCSTR strfolder)
{
SHFILEOPSTRUCT op;
LPCSTR strFrom=strfolder;
op.hwnd = NULL;
op.pFrom = strFrom ;
op.fFlags = FOF_WANTMAPPINGHANDLE|FOF_NOCONFIRMATION|FOF_SILENT;
op.wFunc = FO_DELETE;
if(::SHFileOperation(&op))
{
return false;
}
return true;
}