mfc删除文件夹
Ⅰ 用MFC如何删除指定文件夹下指定扩展名的文件
用个最简单的办法 调用dos
假定dPath为要删除的路径 扩展为.a
CString dPath; //目标路径
dPath=....; //橘圆指定路径
CString toPath; //跳转做伍枝该目标路径
toPath.Format("Dir %s",dPath);
system(toPath); //跳转到该路径
system("del *.a"); /纯敏/删除该路径下所有.a
Ⅱ MFC中的CFindFile有个FindNextFile()函数
你是要寻找文件的例子吧
给你个例子
删除文件夹
删除文件夹你在cmd里面删除试试,他会提示文件夹不为空不能梁困删除。意思就是必须先删除文件夹里面的文件再删除唤渣瞎文件夹
删除文件夹里面的文件,就要用到寻找所有文件,包括文件夹里面的文件夹(子文件夹)
*************************************************
函数名称:BianLiDel
函数功能:删除目录下所有文件,最后删除文件夹
返回值:成功返回TRUE失败返回FALSE
************************************************
//以下是宽字节用法
//窄字节替换函数charsprintfstrcmp去掉_T()
//C:文件夹WenJianJia
//这时候会删除WenJianJia这个目录
BOOL BianLiDel(wchar_t*path)
{
wchar_tD_Path[MAX_PATH]={0};
wsprintfW(D_Path,_T("%s*.*"),path);//在文件名后面加上*.*,输入C:文件夹WenJianJia就会变成C:文件夹WenJianJia*.*
WIN32_FIND_DATA wfd;//定义一个结构体
ZeroMemory(&wfd,sizeof(WIN32_FIND_DATA));//清空结构体和空
HANDLEfhn=FindFirstFile(D_Path,&wfd);//寻找第一个文件
BOOLbRet=TRUE;//如果第一个文件找到了就进入循环
while(bRet)
{
wchar_ttem[MAX_PATH]={0};
if(wfd.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY&&_wcsicmp(_T("."),wfd.cFileName)!=0&&_wcsicmp(_T(".."),wfd.cFileName)!=0)
{ //判断是否为目录判断文件夹名字是否为'.'和'..'
wsprintfW(tem,_T("%s%s\"),path,wfd.cFileName);
BianLiDel(tem);//是目录就删除目录下的文件
}else{
wsprintfW(tem,_T("%s%s"),path,wfd.cFileName);
SetFileAttributes(tem,FILE_ATTRIBUTE_NORMAL);
DeleteFile(tem);//不是就删除文件
}
ZeroMemory(&wfd,sizeof(WIN32_FIND_DATA));//清空结构体
bRet=FindNextFile(fhn,&wfd);//寻找下一个文件
}
FindClose(fhn);//如果不关闭会一直提示被占用
returnRemoveDirectory(path);//删除目录
}
Ⅲ MFC CFileFind和CFile遍历一个指定文件夹并删除里面的所有文件(里面没有下层文件夹目录)问题
首先鄙视一下楼主的代码 毫无章法 乱定义变量 居然还不按同一风格定义
其次 你写的这玩意 我不知道 你是想学习字符转换呢 还是 想遍历文件
最后我想说的是 他们说的都没找到本质问题上去
把这句话
pFile = (LPSTR)(LPCTSTR)finder.GetFilePath();
改为 下面2句
CString str = finder.GetFilePath();
pFile = (LPSTR)(LPCTSTR) str;
你的程序就没问题了
下面看偶的分析
第一
char* pFile;
TCHAR* p;
你让 p = pFile ; 居然没出问题 说明 你的char 和 TCHAR 是一样的玩意 你多半用的是VC6开发
要么就是自己设置了工程属性为 多字节的, 所以根本不存在什么 字符集的转换
什么 UNICODE ANSI 多字节都是瞎扯
第二
断点tiao'shi
pFile = (LPSTR)(LPCTSTR)finder.GetFilePath();
执行后 pFile 指向的是乱码 所以你再往后运行肯定就会出错了
仔细看一下 finder.GetFilePath() 返回的是一个CString;
莫非楼主的 从CString 转换 为 char * 的方式错误了?
测试
CString str("123");
pFile = (LPSTR)(LPCTSTR) str;
完全没有问题啊...
所以问题 归根到底 在与 返回值是 CString 会导致很多 bug的哦
这如果要说起来就太多了... 楼主再找度娘吧
//-- 下面的写法稍微规范点 我就不懂 你定义 TCHAR 为了什么
int main()
{
CFileFind finder;
CString path("D:\\1\\Cache\\");
CString file;
BOOL has = finder.FindFile(path+"*.*");
while(has)
{
has = finder.FindNextFile();
//IsDots 就是的 . 和 .. 如果你不判断是文件夹 它会把当成文件去删除,结果去删除不掉
//在Windows系统下 文件和文件夹被看作同样的东西
if( !finder.IsDots() && !finder.IsDirectory() )
{
file= finder.GetFilePath();
//CFile::Remove(file); 你这函数都没有返回值 你好意思直接就在下面显示删除成功
if (DeleteFile(file))
{
cout<<file<<" 删除成功"<<endl;
}
else
{
cout<<file<<" 删除失败, 非共享的文件是否正在使用?"<<endl;
}
}
}
finder.Close(); //----
return 0;
}
Ⅳ 怎样在VC++中删除一个类
(1)将项目工作区窗口切换到File View页面,展开Source Files和Header Files节点,选定要删除类对应的.h和.cpp文件,按下【Delete】键,删除这两个文件。
(2)选择“文件”→“关闭工作区间”菜单命令,关闭项目。
(3)从当前文件夹里删除对应的.h和.cpp文件与.clw文件。
(4)从新打开该项目文件后,按【Ctrl+W】快捷键,就会弹出一个对话框,询问是否重新建立Class Wizard数据文件,单击【是】按钮,弹出对话框后,再点击【Add All】(这个按钮看情况,有时不用点击也行),然后单击【OK】就行了,进入了MFC Class Wizard对话框,单击【确定】按钮即可。
Ⅳ MFC点击按钮打开对话框选择文件夹(不是文件)
选择所选择的文件夹,获取文件夹的路径:
CString
m_FileDir;
BROWSEINFO
bi;
ZeroMemory(&bi,
sizeof(BROWSEINFO));
bi.hwndOwner
=
m_hWnd;
bi.ulFlags
=
BIF_RETURNONLYFSDIRS;
LPITEMIDLIST
pidl
=
SHBrowseForFolder(&bi);
BOOL
bRet
=
FALSE;
TCHAR
szFolder[MAX_PATH*2];
szFolder[0]
=
_T('');
if
(pidl)
{
if
(SHGetPathFromIDList(pidl,
szFolder))
bRet
=
TRUE;
IMalloc
*pMalloc
=
NULL;
if
(SUCCEEDED(SHGetMalloc(&pMalloc))
&&
pMalloc)
{
pMalloc->Free(pidl);
pMalloc->Release();
}
}
m_FileDir
=
szFolder;//选择的文件夹路径
查找所有MDB文件(记录数组自己写吧)
CFileFind
ff;
BOOL
res
=
ff.FindFile(m_FileDir+"*.mdb");
while(res)
{
res
=
ff.FindNextFile();
//不遍历子目录
if(!ff.IsDirectory()
&&
!ff.IsDots())
{
CString
strFile
=
ff.GetFileName();
…//
在这里写需要的代码
}
}
ff.Close();
//
不要忘记关闭
Ⅵ mfc怎样获取一个文件夹下所有的文件
voidCXXXDlg::SearchFiles(CStringstrMusicFolder)
{
局扒喊CFileFindff;
strMusicFolder+=_T("\");
strMusicFolder+=_T("*.*");
BOOLres=ff.FindFile(strMusicFolder);
while(res)
{
res=ff.FindNextFile();
此世桐野if(!ff.IsDirectory()&&!ff.IsDots())
{
afxMessageBox(ff.GetFilePath());
}
}
ff.Close();
}
Ⅶ mfc中怎么删除一个新建类
.clw和.opt是VC6或早期环境下才有的文件,故只需删除.h .cpp及 .aps文件即可.