我自己写了个小系统,但在删除模块上出了点问题,求讨论下
BOOL CShowDir::DelDir(wchar_t *c_path,wchar_t *w_path,wchar_t *name)
{
wchar_t path[MAX_PATH]={0};
wsprintf(path,L"%s\\DiskDir\\%s",m_dir,w_path);
CFile file;
if(!file.Open(path,CFile::modeRead|CFile::typeBinary))
{
MessageBox(L"打开错误");
return false;
}
if(file.GetLength()==0)//如果指向的下一级源文件为空,直接删除源文件,然后删除文件
{
file.Close();
if(!DeleteFile(path))
{
MessageBox(L"删除文件错误");
return false;
}
////////////////////////////////////////////////////
CFile m_file;
if(!m_file.Open(c_path,CFile::modeRead|CFile::typeBinary))
{
return false;
}
wchar_t d_path[MAX_PATH]={0};
wsprintf(d_path,L"%s\\temp\\temp.tempdir",m_dir);
if(!file.Open(d_path,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary))
{
MessageBox(L"建立临时文件错误");
return false;
}
Dir_Info di;
memset(&di,0x00,sizeof(di));
while(m_file.Read((wchar_t *)&di,sizeof(Dir_Info)))
{
if(wcscmp(di.name,name)==0)
continue;
file.Write((wchar_t *)&di,sizeof(Dir_Info));
memset(&di,0x00,sizeof(di));
}
file.Close();
m_file.Close();
DeleteFile(c_path);
MoveFile(d_path,c_path);
//DeleteFile(d_path);
SetData(c_path);
return true;
}
//这里处理还有下一级的------------分割--------------------------------////////////////////////
Dir_Info di;
memset(&di,0x00,sizeof(di));
while(file.Read((wchar_t *)&di,sizeof(Dir_Info)))
{
if(di.is_dir)
{
MessageBox(di.file_path,di.url_path);
file.Close();
DelDir(di.file_path,di.url_path,di.name);
}
memset(&di,0x00,sizeof(di));
}
return true;
}
一起讨论下吧!大神们
BOOL CShowDir::DelDir(wchar_t *c_path,wchar_t *w_path,wchar_t *name)
{
wchar_t path[MAX_PATH]={0};
wsprintf(path,L"%s\\DiskDir\\%s",m_dir,w_path);
CFile file;
if(!file.Open(path,CFile::modeRead|CFile::typeBinary))
{
MessageBox(L"打开错误");
return false;
}
if(file.GetLength()==0)//如果指向的下一级源文件为空,直接删除源文件,然后删除文件
{
file.Close();
if(!DeleteFile(path))
{
MessageBox(L"删除文件错误");
return false;
}
////////////////////////////////////////////////////
CFile m_file;
if(!m_file.Open(c_path,CFile::modeRead|CFile::typeBinary))
{
return false;
}
wchar_t d_path[MAX_PATH]={0};
wsprintf(d_path,L"%s\\temp\\temp.tempdir",m_dir);
if(!file.Open(d_path,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary))
{
MessageBox(L"建立临时文件错误");
return false;
}
Dir_Info di;
memset(&di,0x00,sizeof(di));
while(m_file.Read((wchar_t *)&di,sizeof(Dir_Info)))
{
if(wcscmp(di.name,name)==0)
continue;
file.Write((wchar_t *)&di,sizeof(Dir_Info));
memset(&di,0x00,sizeof(di));
}
file.Close();
m_file.Close();
DeleteFile(c_path);
MoveFile(d_path,c_path);
//DeleteFile(d_path);
SetData(c_path);
return true;
}
//这里处理还有下一级的------------分割--------------------------------////////////////////////
Dir_Info di;
memset(&di,0x00,sizeof(di));
while(file.Read((wchar_t *)&di,sizeof(Dir_Info)))
{
if(di.is_dir)
{
MessageBox(di.file_path,di.url_path);
file.Close();
DelDir(di.file_path,di.url_path,di.name);
}
memset(&di,0x00,sizeof(di));
}
return true;
}
一起讨论下吧!大神们