Windows环境下C++复制、删除文件夹及子文件

        在网上找了好多windows底下C++代码如何复制文件夹,删除文件夹,但是大多数都是需要输入绝对路径。为了工程需要,工程底下需要输入相对路径,故自己研究了几个函数,可以直接使用。该代码在windows10+visual studio 2017底下测试是成功的,代码如下:

void getFiles(string& dataPath, vector<string>& files)
{
	long long hFile = 0;
	struct _finddata_t fileinfo;
	string p;
	int i = 0;
	if ((hFile = _findfirst(p.assign(dataPath).append("/*").c_str(), &fileinfo)) != -1)
	{
		do
		{
			if ((fileinfo.attrib & _A_SUBDIR)) 
				continue;
			else
				files.push_back(p.assign(dataPath).append("/").append(fileinfo.name));
		} while (_findnext(hFile, &fileinfo) == 0);
		_findclose(hFile);
	}
}
void RemoveDir(string& dirPath)  //删除文件夹,输入string字符串类型的相对路径
{
	vector<string> dirFileList;
	getFiles(dirPath, dirFileList);  //读取所有文件
	while (!dirFileList.empty())
	{
		string fileName = dirFileList.back(); //从后往前删除
		DeleteFile(fileName.c_str()); //一个个删除子文件
		dirFileList.pop_back();
	}
	RemoveDirectory(dirPath.c_str()); //删除文件夹,空文件夹才能用这个函数删除
}
void CopyDir(string& oriPath, string& destPath) //复制文件夹底下的子文件,同样输入相对路径
{
	vector<string> dirFileList;
	getFiles(oriPath, dirFileList);
	while (!dirFileList.empty())
	{
		string fileName = dirFileList.back(); //从后往前复制
		size_t Position = fileName.find_last_of('/');
		string prefixName = fileName.substr(Position, fileName.size()); //读取子文件的文件名
		CopyFile(fileName.c_str(), (destPath+ prefixName).c_str(),false);
		dirFileList.pop_back();
	}
}

        代码所需头文件啥的,可以到时候缺啥再补啥,有三个肯定需要包含:<io.h>,<string>,<vector>。我这里代码写的是删除、复制单个文件夹底下的文件,如果文件夹底下有嵌套文件夹可以在函数里面加一层循环嵌套即可。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值