C/C++刪除檔案

來源:互聯網
上載者:User

void DelDir(CString dir)   
{   
WIN32_FIND_DATA Sr;
HANDLE Handle;
int iattr;
//如果是目錄
iattr=GetFileAttributes(dir);
if(iattr==FILE_ATTRIBUTE_DIRECTORY)    //如果是檔案夾,或者if(iattr & FILE_ATTRIBUTE_DIRECTORY) 
{   
try
{   
Handle=::FindFirstFile(dir+_T("\\*.*"),&Sr);
}   
catch(...)   
{   
return;   
}   
if (Handle)   
{   
do   
{   
if (Sr.cFileName[0]!='.')   
{   
if(Sr.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)   //如果是檔案夾
{   
DelDir(dir+_T("\\")+Sr.cFileName);   
}   
else   
{   
::SetFileAttributes(dir+_T("\\")+Sr.cFileName,0);   
::DeleteFile(dir+_T("\\")+Sr.cFileName);   
}   
}   
} while (::FindNextFile(Handle,&Sr));
::FindClose(Handle);   
}   
if(iattr==FILE_ATTRIBUTE_DIRECTORY)   
::RemoveDirectory(dir);   
}   
else   
{   
::SetFileAttributes(dir,0);   
::DeleteFile(dir);   
}   

}

有可能出現“winbase.h(253): error C4430: 缺少類型說明符 - 假定為 int。注意: C++ 不支援默“的錯誤

注意標頭檔調用的先後順序

#include "stdafx.h"
#include <atlstr.h>
#include <winbase.h>

void DelFile(CString dir);
int _tmain(int argc, _TCHAR* argv[])
{
DelFile(_T("D:\\test"));    //雙斜杠
return 0;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.