VC MFC删除指定文件或文件夹内容
2016-03-23 14:20
489 查看
1.删除指定文件
第一种方法:定义一个文件类对象来操作
CFile TempFile;
TempFile.Remove(指定文件名);
第二种方法:
2.删除目录
_rmdir()
DeleteDirectory(sTempDir)
RemoveDirectory(sTempDir)
//删除文件夹目录(非空)
方法一
bool DeleteDirectory( CString DirName)
{
AfxMessageBox("执行删除文件夹:"+DirName);
CString PUBPATH;
PUBPATH=DirName;
CFileFind tempFind;
DirName+="\\*.*";
BOOL IsFinded=(BOOL)tempFind.FindFile(DirName);
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
CString strDirName;
strDirName+=PUBPATH;
strDirName+="\\";
strDirName+=tempFind.GetFileName();
AfxMessageBox("strDirName :"+strDirName);
if(tempFind.IsDirectory())
{
//strDirName += PUBPATH;
DeleteDirectory(strDirName);
}
else
{
SetFileAttributes(strDirName,FILE_ATTRIBUTE_NORMAL); //去掉文件的系统和隐藏属性
DeleteFile(strDirName);
}
}
}
tempFind.Close();
if(!RemoveDirectory(PUBPATH))
{
return false ;
}
AfxMessageBox("文件夹删除成功...");
return true;
}
方法二
bool DeleteDirectory( char* DirName)
{
HANDLE hFirstFile = NULL;
WIN32_FIND_DATA FindData;
char currdir[MAX_PATH] = {0};
sprintf(currdir, "%s\\*.*", DirName);
hFirstFile = ::FindFirstFile(currdir, &FindData);
if( hFirstFile == INVALID_HANDLE_VALUE )
return false;
BOOL bRes = true;
while(bRes)
{
bRes = ::FindNextFile(hFirstFile, &FindData);
if( (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) //发现目录
{
if( !strcmp(FindData.cFileName, ".") || !strcmp(FindData.cFileName, "..") ) //.或..
continue;
else
{
char tmppath[MAX_PATH] = {0};
sprintf(tmppath, "%s\\%s", DirName, FindData.cFileName);
DeleteDirectory(tmppath);
}
}
else //发现文件
{
char tmppath[MAX_PATH] = {0};
sprintf(tmppath, "%s\\%s", DirName, FindData.cFileName);
::DeleteFile(tmppath);
}
}
::FindClose(hFirstFile);
if(!RemoveDirectory(DirName))
{
return false ;
}
return true;
}
第一种方法:定义一个文件类对象来操作
CFile TempFile;
TempFile.Remove(指定文件名);
第二种方法:
DeleteFile("c:\\abc\\test.exe ");//MFC框架中可直接调用此函数
2.删除目录
_rmdir()
DeleteDirectory(sTempDir)
RemoveDirectory(sTempDir)
//删除文件夹目录(非空)
方法一
bool DeleteDirectory( CString DirName)
{
AfxMessageBox("执行删除文件夹:"+DirName);
CString PUBPATH;
PUBPATH=DirName;
CFileFind tempFind;
DirName+="\\*.*";
BOOL IsFinded=(BOOL)tempFind.FindFile(DirName);
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
CString strDirName;
strDirName+=PUBPATH;
strDirName+="\\";
strDirName+=tempFind.GetFileName();
AfxMessageBox("strDirName :"+strDirName);
if(tempFind.IsDirectory())
{
//strDirName += PUBPATH;
DeleteDirectory(strDirName);
}
else
{
SetFileAttributes(strDirName,FILE_ATTRIBUTE_NORMAL); //去掉文件的系统和隐藏属性
DeleteFile(strDirName);
}
}
}
tempFind.Close();
if(!RemoveDirectory(PUBPATH))
{
return false ;
}
AfxMessageBox("文件夹删除成功...");
return true;
}
方法二
bool DeleteDirectory( char* DirName)
{
HANDLE hFirstFile = NULL;
WIN32_FIND_DATA FindData;
char currdir[MAX_PATH] = {0};
sprintf(currdir, "%s\\*.*", DirName);
hFirstFile = ::FindFirstFile(currdir, &FindData);
if( hFirstFile == INVALID_HANDLE_VALUE )
return false;
BOOL bRes = true;
while(bRes)
{
bRes = ::FindNextFile(hFirstFile, &FindData);
if( (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) //发现目录
{
if( !strcmp(FindData.cFileName, ".") || !strcmp(FindData.cFileName, "..") ) //.或..
continue;
else
{
char tmppath[MAX_PATH] = {0};
sprintf(tmppath, "%s\\%s", DirName, FindData.cFileName);
DeleteDirectory(tmppath);
}
}
else //发现文件
{
char tmppath[MAX_PATH] = {0};
sprintf(tmppath, "%s\\%s", DirName, FindData.cFileName);
::DeleteFile(tmppath);
}
}
::FindClose(hFirstFile);
if(!RemoveDirectory(DirName))
{
return false ;
}
return true;
}
相关文章推荐
- Java之Servlet
- 【Web优化】Yslow优化法则(汇总篇)
- 【Android】【滑屏】scrollTo,scrollBy
- equals方法重写模板
- 傻鸟,千万别掉队
- 我参与的项目
- 3.6黑盒测试方法之 组合覆盖法
- css 内联元素
- 作业评分点
- oc-23-static
- Linux九阳神功
- LeetCode#334. Increasing Triplet Subsequence
- Magento 用了 php 中 ArrayAccess,IteratorAggregate,Countable
- iOS视频边下边播–缓存播放数据流
- 基类和派生类
- iOS小demo之获取文字高度
- WPF属性与特性的映射(TypeConverter)
- 百度前端技术学院-task1.3源代码
- python截图
- Android学习资源