c++创建多级目录

c++创建多级目录
自己写的创建多级目录函数
npszPath 目录字符串,调用方法如下:
TCHAR *lCreate = L".\\test\\test1\\test2";
CreateMultipleDir(lCreate);

bool CreateMultipleDir(TCHAR* npszPath)
{
	bool liRet = true;
	do 
	{
		TCHAR * lpPath = NULL;
		TCHAR ltcPath[MAX_PATH] = {0};
		wcscpy_s(ltcPath,npszPath);

		lpPath = StrRChr(ltcPath,ltcPath+wcslen(ltcPath),'\\');//从末尾查找'\'
		if (lpPath ==NULL)//目录中不含有'\'
		{
			
			if(CreateDirectory(ltcPath,NULL)==0)//创建目录
			{
				int lierr = GetLastError();
				if (lierr != ERROR_ALREADY_EXISTS)//目录已经存在
				{
					OutputDebugString(L"创建失败");
				}
			}
			break;
		}
		else
		{
			TCHAR ltcNextPath[MAX_PATH] = {0};
			wcscpy_s(ltcNextPath,npszPath);
			*(StrRChr(ltcNextPath,ltcNextPath+wcslen(ltcNextPath),'\\')) = UNICODE_NULL;//从末尾查找第一个'\',取'\'前面的部分
			CreateMultipleDir(ltcNextPath);

			if(CreateDirectory(npszPath,NULL)==0)
			{
				int lierr = GetLastError();
				if (lierr != ERROR_ALREADY_EXISTS)
				{
					OutputDebugString(L"创建失败");
				}
			}
		}		

	} while (false);
	return liRet;
}


另一种方法

//创建多级目录
bool CreateMultipleDirectory(wchar_t* npszPath)
{
	bool bRet = false;
	wchar_t lszCreatePath[MAX_PATH] = {0};
	wchar_t* lpszOffset = NULL;
	wchar_t* lpszCreatePathOffset = lszCreatePath;
	do 
	{
		if(npszPath == NULL)
			break;

		lpszOffset = npszPath;

		int liCount = 0;
		while (*lpszOffset != L'\0' && liCount++ < MAX_PATH-1)
		{
			*lpszCreatePathOffset++ = *lpszOffset++;
			if(*lpszOffset == L'\\' || *lpszOffset == L'\0')  //如果到一级目录了,或到结尾了,就尝试创建这层目录
			{
				if(*(lpszCreatePathOffset-1) == L':')
					continue; //如果是磁盘,就继续

				if(CreateDirectory(lszCreatePath,NULL) == FALSE && GetLastError() != ERROR_ALREADY_EXISTS) //创建目录
					return false;
			}
		}

		bRet = true;

	} while (false);

	return bRet;
}


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值