如何用c++实现删除某文件夹(包含子文件夹)中某一指定扩展名的所有文件

进化中 2013-06-29 10:48:57
小弟最近在做一项目,之前遇到删除文件的问题都是自己动手删的。项目完成后想自己动手写一个小代码来实现此功能:
#include <windows.h>
#include <io.h>
#include <stdio.h>

const char *to_research = "D:\\B2\\*.obj"; //欲查找的文件;

int main()
{
long handle; //用于查找的句柄;
struct _finddata_t fileinfo; //存储文件信息的结构体;
handle = _findfirst(to_research, &fileinfo); //第一次查找;
if (handle==-1)
{
return -1;
} //没有找到就返回-1;
printf("%s\n", fileinfo.name); //打印找到的文件的文件名;
while (!_findnext(handle, &fileinfo))
{
printf("%s\n", fileinfo.name);
}

_findclose(handle); //关闭句柄;
DeleteFile("D:\\B2\\B2_12G.obj");
}

但是现在不知道如何将查找到的文件名字传给DeleteFile的参数。请各位指教。
...全文
1124 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
我看你有戏 2013-07-02
  • 打赏
  • 举报
回复
引用 10 楼 lxitong 的回复:
楼上这个好像有点问题啊,为什么输入路径的时候没有结束符啊,比如你要输入“D:B2\\”,如何把它输送给VS2010呢
在vs2010上建立个控制台程序,直接把这代码复制进去就可以了
进化中 2013-07-01
  • 打赏
  • 举报
回复
楼上这个好像有点问题啊,为什么输入路径的时候没有结束符啊,比如你要输入“D:B2\\”,如何把它输送给VS2010呢
www_adintr_com 2013-06-30
  • 打赏
  • 举报
回复
char szPath[MAX_PATH]; sprintf(szPath, "%s%s", "D:\\B2\\", fileinfo.name); DeleteFile(szPath);
kxalpah 2013-06-30
  • 打赏
  • 举报
回复
四楼使用system函数,就是调用windows的命令行
kxalpah 2013-06-30
  • 打赏
  • 举报
回复 1
说一个与c++无关的方法,windows有del命令可以用来删除文件,如果要删除某一文件夹下的某一特定扩展名文件,比如txt,使用del path/*.txt命令就可以了,一个bat文件就能可以解决。
进化中 2013-06-30
  • 打赏
  • 举报
回复
楼上能说的明白点吗,我不太懂。我的意思是先找到扩展名为OBJ的文件,然后删除它。代码中我已完成找的任务,现在就是不知道如何将找到的文件名传给DeleteFile函数。另外您能详细地解释一下您说的这个函数吗?
赵4老师 2013-06-30
  • 打赏
  • 举报
回复
纠正上帖:
system("del /s /q c:\\*.bak");
赵4老师 2013-06-30
  • 打赏
  • 举报
回复
system("del /s /q c:\*.bak");
我看你有戏 2013-06-30
  • 打赏
  • 举报
回复

//获得指定目录下的所有文件的方法!   这个会有用,把文件的后缀名分析下,符合要求的delete
#include <iostream>
#include <windows.h>
#include <cstring>

using namespace std;


void ListFile(char* szDir)
{
	char  szTempDir[MAX_PATH+1];
	strcpy(szTempDir,szDir);
	strcat(szTempDir,"*");
	HANDLE  hFindFile;
	WIN32_FIND_DATA  FileData;
	
	hFindFile = FindFirstFile(szTempDir,&FileData);
	
	if( hFindFile == INVALID_HANDLE_VALUE )
	{
		return ;
	}
	else
	{
		do
		{
			
			if( (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
				&& strcmp(FileData.cFileName,".")
				&& strcmp(FileData.cFileName,".."))
			{
				char szNewDir[MAX_PATH+1];
				strcpy(szNewDir,szDir);
				strcat(szNewDir,FileData.cFileName);
				strcat(szNewDir,"\\");
				ListFile(szNewDir);
			}
			else
			{
				cout<<szDir<<FileData.cFileName<<endl;
			}
		}
		while(FindNextFile(hFindFile,&FileData));
		
		FindClose(hFindFile);
	}
}





int main()
{
	char   szPath[MAX_PATH+1];
	while(cin>>szPath)
	{
		if(szPath[strlen(szPath)-1]!='\\')
			strcat(szPath,"\\");
		ListFile(szPath);
	}
	return 0;
}

cl781121002 2013-06-29
  • 打赏
  • 举报
回复
楼上已经写的很清楚了
进化中 2013-06-29
  • 打赏
  • 举报
回复
#include <windows.h>
#include <io.h>
#include <stdio.h>

const char *to_research = "D:\\B2\\*.obj";                          //欲查找的文件;

int main()
{
	long handle;                                                    //用于查找的句柄;
	struct _finddata_t fileinfo;                                    //存储文件信息的结构体;
	handle = _findfirst(to_research, &fileinfo);                    //第一次查找;
	if (handle==-1)
	{
		return -1;
	}                                                               //没有找到就返回-1;
	printf("%s\n", fileinfo.name);                                  //打印找到的文件的文件名;
	while (!_findnext(handle, &fileinfo))
	{
		printf("%s\n", fileinfo.name);
	}

	_findclose(handle);                                              //关闭句柄;   
	DeleteFile("D:\\B2\\B2_12G.obj");
}

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧