记Unicode下VS2013对复制文件及文件夹和删除文件及文件夹

          今天在接到一个项目的时候  要用到这两个功能,于是面向百度编程,辛辛苦苦找了两个小时左右,

在一个不知道什么的地方找到了方法,特在此分享记录上来

 

这是删除文件及文件夹的

DirName:表示文件夹目录

bRemoveRootDir:表示是否全部删除,根目录也不留下

运用递归循环的方式,一直遍历

BOOL DeleteDirectory(CString DirName, BOOL bRemoveRootDir)
{

	CFileFind tempFind;
	CString csZRootDir;


	csZRootDir.Format(L"%s\\*.*", DirName.GetBuffer(0));

	BOOL IsFinded = (BOOL)tempFind.FindFile(csZRootDir.GetBuffer(0));

	while (IsFinded)

	{
		IsFinded = (BOOL)tempFind.FindNextFile();

		if (!tempFind.IsDots())

		{
			CString csFileName;


			csFileName.Format(L"%s", tempFind.GetFileName().GetBuffer(0));
			if (tempFind.IsDirectory())

			{
				CString tmp;
				tmp.Format(L"%s\\%s", DirName.GetBuffer(0), csFileName.GetBuffer(0));

				DeleteDirectory(tmp, TRUE);

			}

			else

			{
				CString tmp;
				tmp.Format(L"%s\\%s", DirName, csFileName.GetBuffer(0));

				DeleteFile(tmp.GetBuffer(0));

			}

		}

	}

	tempFind.Close();
	if (bRemoveRootDir)
	{
		if (!RemoveDirectory(DirName))

		{
			//LogRecord(TRUE, _T("remove directory failed! %s \r\n"), DirName);

			return FALSE;
		}
	}


	return TRUE;

 

 

文件夹复制操作

Source:表示原路径

target:表示新路径

BOOL CopyDirectory(CString source, CString target)
{
	CreateDirectory(target, NULL); //获取目标拷贝的路径 拷贝至哪里
	CFileFind finder;
	CString path = source + _T("\\*.*"); //需要拷贝的文件的路径
	// AfxMessageBox(path);  //调试用
	bool bWorking = finder.FindFile(path);  //是否找到了需要拷贝的文件的路径
	while (bWorking){
		bWorking = finder.FindNextFile();
		//AfxMessageBox(finder.GetFileName());  //调试用
		if (finder.IsDirectory() && !finder.IsDots()){ //是不是有效的文件夹
			CopyDirectory(finder.GetFilePath(), target + _T("\\") + finder.GetFileName()); //递归查找文件夹
		}
		else{ //是文件则直接复制 
			CopyFile(finder.GetFilePath(), target + _T("\\") + finder.GetFileName(), FALSE);  //拷贝文件夹下的所有文件
		}
	}
	return TRUE;
}

 

 

亲测可用 Unicode环境下    多字节集环境下自己测试一下  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和沐阳学逆向

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值