SHFileOperation好用 MSDN:: SHFileOperation WINSHELLAPI int WINAPI SHFileOperation( LPSHFILEOPSTRUCT lpFileOp ); Copies, moves, renames, or deletes a file system object. Returns zero if successful, or nonzero otherwise. lpFileOp Address of an SHFILEOPSTRUCT structure that contains information this function needs to carry out the specified operation. --------------------------------------------------------------------------------
一样的问题!
char* pFileName = "test.dat";
TRY
{
CFile::Remove( pFileName );
}
CATCH( CFileException, e )
{
#ifdef _DEBUG
afxDump << "File " << pFileName << " cannot be removed\n";
#endif
}
END_CATCH
然后删除
然后再删除这个文件夹
WIN32_FIND_DATA FileData;
HANDLE hSearch;
DWORD dwAttrs;
char szDirPath[] = "c:\\TEXTRO\\";
char szNewPath[MAX_PATH];
char szHome[MAX_PATH];
BOOL fFinished = FALSE;
// Create a new directory.
if (!CreateDirectory(szDirPath, NULL))
{
ErrorHandler("Couldn't create new directory.");
}
// Start searching for .TXT files in the current directory.
hSearch = FindFirstFile("*.txt", &FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
ErrorHandler("No .TXT files found.");
}
// Copy each .TXT file to the new directory
// and change it to read only, if not already.
while (!fFinished)
{
lstrcpy(szNewPath, szDirPath);
lstrcat(szNewPath, FileData.cFileName);
if (CopyFile(FileData.cFileName, szNewPath, FALSE))
{
dwAttrs = GetFileAttributes(FileData.cFileName);
if (!(dwAttrs & FILE_ATTRIBUTE_READONLY))
{
SetFileAttributes(szNewPath,
dwAttrs | FILE_ATTRIBUTE_READONLY);
}
}
else
{
ErrorHandler("Couldn't copy file.");
}
if (!FindNextFile(hSearch, &FileData))
{
if (GetLastError() == ERROR_NO_MORE_FILES)
{
MessageBox(hwnd, "No more .TXT files.",
"Search completed.", MB_OK);
fFinished = TRUE;
}
else
{
ErrorHandler("Couldn't find next file.");
}
}
}
{
SHFILEOPSTRUCT FileOp;
memset(&FileOp, 0, sizeof(FileOp));
FileOp.hwnd = NULL;
FileOp.wFunc = FO_DELETE; //删除
FileOp.pFrom = strDirRoot;
FileOp.pTo = NULL;
FileOp.fFlags = FOF_SIMPLEPROGRESS | FOF_ALLOWUNDO
(::SHFileOperation(&FileOp) == 0){
return TRUE;
}else return FALSE;
}
strWildcard += _T("\\*.*");
CFileFind finder;
BOOL bWorking = finder.FindFile(strWildcard);
while (bWorking)
{
bWorking = finder.FindNextFile();
::DeleteFile((LPCTSTR) finder.GetFilePath());
}
finder.Close();
MSDN::
SHFileOperation
WINSHELLAPI int WINAPI SHFileOperation(
LPSHFILEOPSTRUCT lpFileOp
); Copies, moves, renames, or deletes a file system object. Returns zero if successful, or nonzero otherwise.
lpFileOp
Address of an SHFILEOPSTRUCT structure that contains information this function needs to carry out the specified operation. --------------------------------------------------------------------------------