FileOperate.cpp
上传用户:jzscgs158
上传日期:2022-05-25
资源大小:8709k
文件大小:8k
源码类别:

百货/超市行业

开发平台:

Visual C++

  1. #include "StdAfx.h"
  2. #include "FileOperate.h"
  3. //功能:构造函数制造主目录
  4. CString strTmpPath;
  5. int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
  6. {
  7. TCHAR szDir[MAX_PATH];
  8. switch(uMsg)
  9. {
  10. case BFFM_INITIALIZED:
  11. if (lpData)
  12. {
  13. strcpy(szDir, strTmpPath.GetBuffer(strTmpPath.GetLength()));
  14. SendMessage(hwnd,BFFM_SETSELECTION,TRUE,(LPARAM)szDir);
  15. }
  16. break;
  17. case BFFM_SELCHANGED: 
  18. {
  19. if (SHGetPathFromIDList((LPITEMIDLIST) lParam ,szDir))
  20. {
  21. SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)szDir);
  22. }
  23. break;
  24. }
  25. default:
  26. break;
  27. }
  28. return 0;
  29. }
  30. CFileOperate::CFileOperate()
  31. {
  32. CString strPath=GetAppPath()+"\data";
  33. if (!IsFileExist(strPath,TRUE))
  34. {
  35. CreateDirectory(strPath,NULL);
  36. }
  37. }
  38. //功能:取得当前程序运行的路径
  39. CString CFileOperate::GetAppPath()
  40. {
  41. char lpFileName[MAX_PATH];
  42. GetModuleFileName(AfxGetInstanceHandle(),lpFileName,MAX_PATH);
  43. CString strFileName = lpFileName;
  44. int nIndex = strFileName.ReverseFind ('\');
  45. CString strPath;
  46. if (nIndex > 0)
  47. strPath = strFileName.Left (nIndex);
  48. else
  49. strPath = "";
  50. return strPath;
  51. }
  52. //功能:判断是否存在strFn文件夹
  53. BOOL CFileOperate::IsFileExist(CString strFn, BOOL bDir)
  54. {
  55.     HANDLE h;
  56. LPWIN32_FIND_DATA pFD=new WIN32_FIND_DATA;
  57. BOOL bFound=FALSE;
  58. if(pFD)
  59. {
  60. h=FindFirstFile(strFn,pFD);
  61. bFound=(h!=INVALID_HANDLE_VALUE);
  62. if(bFound)
  63. {
  64. if(bDir)
  65. bFound= (pFD->dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)!=NULL;
  66. FindClose(h);
  67. }
  68. delete pFD;
  69. }
  70. return bFound;
  71. }
  72. //功能:制作strFloderName文件夹返回文件夹名
  73. CString CFileOperate::MakeDirectory(CString strFloderName)
  74. {
  75. strFloderName.TrimLeft();
  76. strFloderName.TrimRight();
  77. CString strFilePath;
  78. COleDateTime time=COleDateTime::GetCurrentTime();
  79. strFloderName=time.Format("%Y%m%d%H%M%S")+"_"+strFloderName;
  80. strFilePath=GetAppPath()+"\data\"+strFloderName;
  81. if(!IsFileExist(strFilePath,TRUE))
  82. {
  83. CreateDirectory(strFilePath,NULL);
  84. }
  85. return strFloderName;
  86. }
  87. //功能:自动制作文件夹返回文件夹名
  88. CString CFileOperate::MakeDirectory()
  89. {
  90. CString strFilePath,strFloderName;
  91. COleDateTime time=COleDateTime::GetCurrentTime();
  92. strFloderName=time.Format("%Y%m%d%H%M%S");
  93. strFilePath=GetAppPath()+"\data\"+strFloderName;
  94. if(!IsFileExist(strFilePath,TRUE))
  95. {
  96. CreateDirectory(strFilePath,NULL);
  97. }
  98. return strFloderName;
  99. }
  100. //功能:得到文件夹名为strFloderName的路径
  101. CString CFileOperate::GetDirectoryPath(CString strFloderName)
  102. {
  103. strFloderName.TrimLeft();
  104. strFloderName.TrimRight();
  105. CString strFilePath;
  106. strFilePath=GetAppPath()+"\data\"+strFloderName;
  107. if(!IsFileExist(strFilePath,TRUE))
  108. {
  109. CreateDirectory(strFilePath,NULL);
  110. }
  111. return strFilePath;
  112. }
  113. //功能:删除strFloderdName文件夹
  114. void CFileOperate::delDirectory(CString strFloderName)
  115. {
  116. strFloderName.TrimLeft();
  117. strFloderName.TrimRight();
  118. CFileFind finder;
  119. CString strPath;
  120. strPath=GetAppPath()+"\data\"+strFloderName+"\*.*";
  121. BOOL bWork=finder.FindFile(strPath);
  122. while(bWork)
  123. {
  124. bWork=finder.FindNextFile();
  125. if (finder.IsArchived())
  126. {
  127. CString str1=finder.GetFilePath();
  128. DeleteFile(str1);
  129. }
  130. else
  131. {
  132. CString str2=finder.GetFilePath();
  133. RemoveDirectory(str2);
  134. }
  135. }
  136. finder.Close();
  137. strPath=GetAppPath()+"\data\"+strFloderName;
  138. RemoveDirectory(strPath);
  139. }
  140. //功能:制作主文件夹
  141. void CFileOperate::MakeMainDirectory()
  142. {
  143. CString strFilePath;
  144. strFilePath=GetAppPath()+"\data\";
  145. if(!IsFileExist(strFilePath,TRUE))
  146. {
  147. CreateDirectory(strFilePath,NULL);
  148. }
  149. }
  150. //功能:删除主文件夹
  151. void CFileOperate::delMainDirectory()
  152. {
  153. CString strFilePath;
  154. strFilePath=GetAppPath()+"\data\";
  155. if(IsFileExist(strFilePath,TRUE))
  156. {
  157. RemoveDirectory(strFilePath);
  158. }
  159. }
  160. //功能:判断strIntDigit是否为整数,是否小于intBig
  161. BOOL CFileOperate::CheckIntDigit(CString strIntDigit,int intBig)
  162. {
  163. strIntDigit.TrimLeft();
  164. strIntDigit.TrimRight();
  165. BOOL bln=TRUE;
  166. int i=0;
  167. if (strIntDigit=="")
  168. {
  169. return TRUE;
  170. }
  171. else
  172. {
  173. while (i<strIntDigit.GetLength() && bln==TRUE)
  174. {
  175. if (strIntDigit.GetAt(i)>='0' && strIntDigit.GetAt(i)<='9')
  176. {
  177. bln=TRUE;
  178. }
  179. else
  180. {
  181. bln=FALSE;
  182. }
  183. i=i+1;
  184. }
  185. if (bln==TRUE)
  186. {
  187. if (atoi(strIntDigit)<=intBig)
  188. {
  189. return TRUE;
  190. }
  191. else 
  192. return FALSE;
  193. }
  194. else
  195. return FALSE;
  196. }
  197. }
  198. //功能:判断strFileName是否可以做文件夹或文件的名字
  199. BOOL CFileOperate::CheckFileName(CString strFileName)
  200. {
  201. strFileName.TrimLeft();
  202. strFileName.TrimRight();
  203. char ch[10]={'\','/',':','*','?','<','>','|','"','.'};
  204. for (int i=0;i<strFileName.GetLength();i++)
  205. {
  206. for (int j=0;j<10;j++)
  207. {
  208. if (strFileName.GetAt(i)==ch[j])
  209. {
  210. return FALSE;
  211. }
  212. }
  213. }
  214. if (i==strFileName.GetLength())
  215. {
  216. return TRUE;
  217. }
  218. else
  219. return FALSE;
  220. }
  221. //功能:判断strText是否为空
  222. BOOL CFileOperate::CheckEmpty(CString strText)
  223. {
  224. strText.TrimLeft();
  225. strText.TrimRight();
  226. if(strText=="")
  227. return TRUE;
  228. else
  229. return FALSE;
  230. }
  231. //功能:删除strFloderName文件夹下名为strFileName的文件
  232. void CFileOperate::delFile(CString strFloderName,CString strFileName)
  233. {
  234. strFloderName.TrimLeft();
  235. strFloderName.TrimRight();
  236. strFileName.TrimLeft();
  237. strFileName.TrimRight();
  238. CFileFind finder;
  239. CString strPath;
  240. strPath=GetAppPath()+"\data\";
  241. strPath=strPath+strFloderName;
  242. strPath=strPath+"\"+strFileName;
  243. DeleteFile(strPath);
  244. }
  245. //功能:得到strFloderName文件夹下名为strFileName的文件路径
  246. CString CFileOperate::GetFileName(CString strFolderName,CString strFileName)
  247. {
  248. strFolderName.TrimLeft();
  249. strFolderName.TrimRight();
  250. strFileName.TrimLeft();
  251. strFileName.TrimRight();
  252. CString strPath;
  253. strPath=GetAppPath()+"\data\"+strFolderName+"\"+strFileName;
  254. return strPath;
  255. }
  256. //功能:制作strFloderName文件夹下名为strFileName的文件
  257. CString CFileOperate::MakeFile(CString strFloderName,BOOL blnMake)
  258. {
  259. strFloderName.TrimLeft();
  260. strFloderName.TrimRight();
  261. CString strFilePath;
  262. CString strFileName;
  263. COleDateTime time=COleDateTime::GetCurrentTime();
  264. if (blnMake)//实时
  265. {
  266. strFileName="0_"+time.Format("%Y%m%d%H%M%S")+".tl";
  267. }
  268. else//回放
  269. {
  270. strFileName="1_"+time.Format("%Y%m%d%H%M%S")+".tl";
  271. }
  272. strFilePath=GetDirectoryPath(strFloderName)+"\"+strFileName;
  273. return strFilePath;
  274. }
  275. BOOL CFileOperate::GetFolder(CString* strSelectedFolder,const char* lpszTitle,const HWND hwndOwner,const char* strRootFolder,const char* strStartFolder)
  276. {
  277. char pszDisplayName[MAX_PATH];
  278. LPITEMIDLIST lpID;
  279. BROWSEINFOA bi;
  280. bi.hwndOwner = hwndOwner;
  281. if (strRootFolder == NULL)
  282. {
  283. bi.pidlRoot = NULL;
  284. }
  285. else
  286. {
  287. LPITEMIDLIST  pIdl = NULL;
  288. IShellFolder* pDesktopFolder;
  289. char          szPath[MAX_PATH];
  290. OLECHAR       olePath[MAX_PATH];
  291. ULONG         chEaten;
  292. ULONG         dwAttributes;
  293. strcpy(szPath, (LPCTSTR)strRootFolder);
  294. if (SUCCEEDED(SHGetDesktopFolder(&pDesktopFolder)))
  295. {
  296. MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szPath, -1, olePath, MAX_PATH);
  297. pDesktopFolder->ParseDisplayName(NULL, NULL, olePath, &chEaten, &pIdl, &dwAttributes);
  298. pDesktopFolder->Release();
  299. }
  300. bi.pidlRoot = pIdl;
  301. }
  302. bi.pszDisplayName = pszDisplayName;
  303. bi.lpszTitle = lpszTitle;
  304. bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
  305. bi.lpfn = BrowseCallbackProc;
  306. if (strStartFolder == NULL)
  307. {
  308. bi.lParam = FALSE;
  309. }
  310. else
  311. {
  312. strTmpPath.Format("%s", strStartFolder);
  313. bi.lParam = TRUE;
  314. }
  315. bi.iImage = NULL;
  316. lpID = SHBrowseForFolderA(&bi);
  317. if (lpID != NULL)
  318. {
  319. BOOL b = SHGetPathFromIDList(lpID, pszDisplayName);
  320. if (b == TRUE)
  321. {
  322. strSelectedFolder->Format("%s",pszDisplayName);
  323. return TRUE;
  324. }
  325. }
  326. else
  327. {
  328. strSelectedFolder->Empty();
  329. }
  330. return FALSE;
  331. }