MFC 删除文件解决方案
MFC 删除文件
请教一个问题
我的删除程序
有些文件夹不能删除?
程序如下
BOOL DeleteDirectory(char *DirName)
{
CFileFind tempFind;
char tempFileFind[MAX_PATH];
sprintf(tempFileFind,"%s\\*.*",DirName);
BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
char foundFileName[MAX_PATH];
strcpy(foundFileName,tempFind.GetFileName().GetBuffer(MAX_PATH));
if(tempFind.IsDirectory())
{
char tempDir[MAX_PATH];
sprintf(tempDir,"%s\\%s",DirName,foundFileName);
DeleteDirectory(tempDir);
}
else
{
char tempFileName[MAX_PATH];
sprintf(tempFileName,"%s\\%s",DirName,foundFileName);
SetFileAttributes(tempFileName, 0);
DeleteFile(tempFileName);
}
}
}
tempFind.Close();
if(!RemoveDirectory(DirName))
{
TRACE("%d\n",GetLastError());
return FALSE;
}
return TRUE;
}
这个程序删除的时候,有些文件夹不能删除,我通过TRACE("%d\n",GetLastError());
报出来的错误号是5
请问这是什么原因阿 ?
------解决方案--------------------
99% 是只读文件!
删除文件以前,用下面的函数把只读去掉:
请教一个问题
我的删除程序
有些文件夹不能删除?
程序如下
BOOL DeleteDirectory(char *DirName)
{
CFileFind tempFind;
char tempFileFind[MAX_PATH];
sprintf(tempFileFind,"%s\\*.*",DirName);
BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
char foundFileName[MAX_PATH];
strcpy(foundFileName,tempFind.GetFileName().GetBuffer(MAX_PATH));
if(tempFind.IsDirectory())
{
char tempDir[MAX_PATH];
sprintf(tempDir,"%s\\%s",DirName,foundFileName);
DeleteDirectory(tempDir);
}
else
{
char tempFileName[MAX_PATH];
sprintf(tempFileName,"%s\\%s",DirName,foundFileName);
SetFileAttributes(tempFileName, 0);
DeleteFile(tempFileName);
}
}
}
tempFind.Close();
if(!RemoveDirectory(DirName))
{
TRACE("%d\n",GetLastError());
return FALSE;
}
return TRUE;
}
这个程序删除的时候,有些文件夹不能删除,我通过TRACE("%d\n",GetLastError());
报出来的错误号是5
请问这是什么原因阿 ?
------解决方案--------------------
99% 是只读文件!
删除文件以前,用下面的函数把只读去掉:
- C/C++ code
SetFileAttributes(csPathName,FILE_ATTRIBUTE_NORMAL);