天天看點

删除 複制檔案夾

删除:

void COperationDlg::OnDel2(CString m_strFileDictory)

//參數就是目錄的路徑

{

if(m_strFileDictory.GetLength()==0)

::AfxMessageBox

(”目錄名非法!”,MB_OK|MB_ICONEXCLAMATION);

return;

}

char FromFileName[80]=”";

strcpy(FromFileName,m_strFileDictory);

strcat(FromFileName,”");

SHFILEOPSTRUCT lpFileOp;

lpFileOp.hwnd =GetSafeHwnd();

lpFileOp.wFunc =FO_DELETE;

lpFileOp.pFrom =FromFileName;

lpFileOp.pTo=NULL;

lpFileOp.fFlags =FOF_SILENT|FOF_NOCONFIRMATION;

lpFileOp.fAnyOperationsAborted =FALSE;

lpFileOp.hNameMappings =NULL;

lpFileOp.lpszProgressTitle =NULL;

int rval=SHFileOperation(&lpFileOp);

if(rval==0)

if(lpFileOp.fAnyOperationsAborted ==TRUE)

::AfxMessageBox (”删除目錄操作取消”,MB_OK);

else

::AfxMessageBox(”删除目錄操作成功!”,MB_OK|MB_ICONEXCLAMATION);

(”删除目錄操作失敗!”,MB_OK|MB_ICONEXCLAMATION);

拷貝

BOOL CCutfoldDlg::CopyDirectory(CString SourcePath,CString

CopytoPath)

CFileFind tempFind;

char tempFileFind[200];

char tempFileFind1[200];

SECURITY_ATTRIBUTES lpSecurityDescriptor;

CreateDirectory(CopytoPath,&lpSecurityDescriptor);

sprintf(tempFileFind1,”%s\\*.*”,CopytoPath);

sprintf(tempFileFind,”%s\\*.*”,SourcePath);

BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);

// BOOL IsFinded1=(BOOL)tempFind.FindFile(tempFileFind1);

while(IsFinded)

IsFinded=(BOOL)tempFind.FindNextFile();

if(!tempFind.IsDots())

char foundFileName[200];

// char foundFileName1[200];

strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200));

//

strcpy(foundFileName1,tempFind.GetFileName().GetBuffer(200));

if(tempFind.IsDirectory())

char tempDir[200];

char tempDir1[200];

sprintf(tempDir,”%s\\%s”,SourcePath,foundFileName);

sprintf(tempDir1,”%s\\%s”,CopytoPath,foundFileName);

CopyDirectory(tempDir,tempDir1);

char tempFileName[200];

char tempFileName1[200];

sprintf(tempFileName,”%s\\%s”,SourcePath,foundFileName);

sprintf(tempFileName1,”%s\\%s”,CopytoPath,foundFileName);

//DeleteFile(tempFileName);

CopyFile(tempFileName,tempFileName1,0);

tempFind.Close();

return TRUE;

要實作移動,周遊檔案+MoveFile+CreateDirectory

周遊方法參考:

HANDLE hFind;

WIN32_FIND_DATA dataFind;

BOOL bMoreFiles=TRUE;

hFind=FindFirstFile(sPath+”\\*.txt”,&dataFind);////sPath表示路徑

while(hFind!=INVALID_HANDLE_VALUE

&& bMoreFiles==TRUE)

if(dataFind.dwFileAttributes==FILE_ATTRIBUTE_ARCHIVE)

MessageBox(dataFind.cFileName);

bMoreFiles=FindNextFile(hFind,&dataFind);

FindClose(hFind);

繼續閱讀