FileManageLib.cpp
上传用户:tjfeida
上传日期:2013-03-10
资源大小:1917k
文件大小:6k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. // FileManageLib.cpp: implementation of the CFileManageLib class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. /*********************************************
  5. **该文件是属于WolfFTP工程中的。如果有什么问题
  6. **请联系
  7. **         tablejiang@21cn.com
  8. **或者访问
  9. **         http://wolfftp.51.net
  10. **以得到最新的支持。
  11. *********************************************/
  12. #include "stdafx.h"
  13. #include "QuickFTP.h"
  14. #include "FileManageLib.h"
  15. #include "shellapi.h"
  16. #ifdef _DEBUG
  17. #undef THIS_FILE
  18. static char THIS_FILE[]=__FILE__;
  19. #define new DEBUG_NEW
  20. #endif
  21. //////////////////////////////////////////////////////////////////////
  22. // Construction/Destruction
  23. //////////////////////////////////////////////////////////////////////
  24. CFileManageLib::CFileManageLib()
  25. {
  26. //init the data
  27. m_strFrom = NULL ;
  28. m_strTo = NULL ;
  29. m_dwFromBfSize = 0 ;
  30. m_dwFromUseSize = 0 ;
  31. m_dwToBfSize = 0 ;
  32. m_dwToUseSize = 0 ;
  33. }
  34. CFileManageLib::~CFileManageLib()
  35. {
  36. }
  37. /****************************************************
  38. ** @Description
  39. ** performs the delete file operation 
  40. **
  41. ** @Parameter
  42. ** void
  43. **
  44. ** @Return: success return true ,else false .
  45. ** @Author :Table.JHM.太子
  46. ** e-mail :tablejiang@21cn.com
  47. ** Date :2001 3 26
  48. ****************************************************/
  49. BOOL CFileManageLib::DeleteFile( )
  50. {
  51. SHFILEOPSTRUCT st;
  52. st.hwnd = NULL; 
  53.     st.wFunc = FO_DELETE ; 
  54.     st.pFrom =  m_strFrom ; 
  55.     st.pTo = NULL ; 
  56.     st.fFlags = 0; 
  57.     st.fAnyOperationsAborted = FALSE; 
  58.     st.hNameMappings = NULL; 
  59.     st.lpszProgressTitle = NULL; 
  60. return ( !ActionRun(&st) ) ;
  61. }
  62. /****************************************************
  63. ** @Description
  64. ** performs the copy files operation 
  65. **
  66. ** @Parameter
  67. ** void
  68. **
  69. ** @Return:
  70. ** @Author :Table.JHM.太子
  71. ** e-mail :tablejiang@21cn.com
  72. ** Date :2001 3 26
  73. ****************************************************/
  74. BOOL CFileManageLib::CopyFile( )
  75. {
  76. SHFILEOPSTRUCT st;
  77. st.hwnd = NULL; 
  78.     st.wFunc = FO_COPY ; 
  79.     st.pFrom = m_strFrom ; 
  80.     st.pTo = m_strTo ; 
  81.     st.fFlags = 0; 
  82.     st.fAnyOperationsAborted = FALSE; 
  83.     st.hNameMappings = NULL; 
  84.     st.lpszProgressTitle = NULL; 
  85. return ( !ActionRun(&st) ) ;
  86. }
  87. /****************************************************
  88. ** @Description
  89. ** performs the move files operation
  90. **
  91. ** @Parameter
  92. **
  93. **
  94. ** @Return:
  95. ** @Author :Table.JHM.太子
  96. ** e-mail :tablejiang@21cn.com
  97. ** Date :2001 3 26
  98. ****************************************************/
  99. BOOL CFileManageLib::MoveFile( )
  100. {
  101. SHFILEOPSTRUCT st;
  102. st.hwnd = NULL; 
  103.     st.wFunc = FO_MOVE ; 
  104.     st.pFrom = m_strFrom ; 
  105.     st.pTo = m_strTo ; 
  106.     st.fFlags = 0; 
  107.     st.fAnyOperationsAborted = FALSE; 
  108.     st.hNameMappings = NULL; 
  109.     st.lpszProgressTitle = NULL; 
  110. return ( !ActionRun(&st) ) ;
  111. }
  112. /****************************************************
  113. ** @Description
  114. ** performs the rename file operation 
  115. **
  116. ** @Parameter
  117. **
  118. **
  119. ** @Return:
  120. ** @Author :Table.JHM.太子
  121. ** e-mail :tablejiang@21cn.com
  122. ** Date :2001 3 26
  123. ****************************************************/
  124. BOOL CFileManageLib::RenameFile( )
  125. {
  126. SHFILEOPSTRUCT st;
  127. st.hwnd = NULL; 
  128.     st.wFunc = FO_RENAME  ; 
  129.     st.pFrom = m_strFrom ; 
  130.     st.pTo = m_strTo ;
  131.     st.fFlags = 0; 
  132.     st.fAnyOperationsAborted = FALSE; 
  133.     st.hNameMappings = NULL; 
  134.     st.lpszProgressTitle = NULL; 
  135. return ( !ActionRun(&st) ) ;
  136. }
  137. /****************************************************
  138. ** @Description
  139. ** add the source file path to file list .
  140. **
  141. ** @Parameter
  142. ** LPCTSTR szPathName : want add path .
  143. **
  144. ** @Return:
  145. ** @Author :Table.JHM.太子
  146. ** e-mail :tablejiang@21cn.com
  147. ** Date :2001 3 26
  148. ****************************************************/
  149. BOOL CFileManageLib::AddFromFileList( LPCTSTR szPathName )
  150. {
  151. char * pfrom ;
  152. if( m_dwFromBfSize <= m_dwFromUseSize )
  153. {
  154. //if the buffer small the request , 
  155. //then increase the buffer !.
  156. m_dwFromBfSize += CREATESIZE ;
  157. pfrom = (char*)realloc( (void*)m_strFrom , m_dwFromBfSize ) ;
  158. if( pfrom == NULL )
  159. return false ;
  160. m_strFrom = pfrom ;
  161. }
  162. //add to file list.
  163. char * szPos ;
  164. DWORD iLength = strlen( szPathName ) ;
  165. szPos = m_strFrom + m_dwFromUseSize ;
  166. memcpy( szPos , szPathName , iLength) ;
  167. szPos[iLength] = 0 ;
  168. m_dwFromUseSize += iLength ;
  169. m_dwFromUseSize ++ ;
  170. return true ;
  171. }
  172. /****************************************************
  173. ** @Description
  174. ** add the destination path to file list .
  175. **
  176. ** @Parameter
  177. **
  178. **
  179. ** @Return:
  180. ** @Author :Table.JHM.太子
  181. ** e-mail :tablejiang@21cn.com
  182. ** Date :2001 3 26
  183. ****************************************************/
  184. BOOL CFileManageLib::AddToFileList(LPCTSTR szPathName)
  185. {
  186. char * pto ;
  187. if( m_dwToBfSize <= m_dwToUseSize )
  188. {
  189. //if the buffer small the request , 
  190. //then increase the buffer !.
  191. m_dwToBfSize += CREATESIZE ;
  192. pto = (char*)realloc( m_strTo , m_dwToBfSize ) ;
  193. if( pto == NULL )
  194. return false ;
  195. m_strTo = pto ;
  196. }
  197. char * szPos ;
  198. DWORD iLength = strlen( szPathName ) ;
  199. szPos = m_strTo + m_dwToUseSize ;
  200. memcpy( szPos , szPathName , iLength) ;
  201. szPos[iLength] = 0 ;
  202. m_dwToUseSize += iLength ;
  203. m_dwToUseSize ++ ;
  204. return true ;
  205. }
  206. /****************************************************
  207. ** @Description
  208. ** this function is run the operation
  209. **
  210. ** @Parameter
  211. **
  212. **
  213. ** @Return:
  214. ** @Author :Table.JHM.太子
  215. ** e-mail :tablejiang@21cn.com
  216. ** Date :2001 3 26
  217. ****************************************************/
  218. BOOL CFileManageLib::ActionRun(SHFILEOPSTRUCT *pSt)
  219. {
  220. BOOL bRet ;
  221. //add the  at end .
  222. AddFromFileList( "" ) ;
  223. AddToFileList( "" ) ;
  224. bRet = SHFileOperation( pSt ) ;
  225. ClearBuffer( ) ;
  226. return bRet ;
  227. }
  228. /****************************************************
  229. ** @Description
  230. ** clear the file list buffer ,and data
  231. **
  232. ** @Parameter
  233. **
  234. **
  235. ** @Return:
  236. ** @Author :Table.JHM.太子
  237. ** e-mail :tablejiang@21cn.com
  238. ** Date :2001 3 26
  239. ****************************************************/
  240. BOOL CFileManageLib::ClearBuffer()
  241. {
  242. free( m_strFrom ) ;
  243. free( m_strTo ) ;
  244. m_strFrom = NULL ;
  245. m_strTo = NULL ;
  246. m_dwFromBfSize = 0 ;
  247. m_dwFromUseSize = 0 ;
  248. m_dwToBfSize = 0 ;
  249. m_dwToUseSize = 0 ;
  250. return true ;
  251. }