VC 确保你要的路径创建成功

在创建本地文件前都要先去检查文件夹路径是否存在,如果不存在则需要去创建它,假设已有路径 D:\work 。

1 保存一个文件到 D:\work\test 路径下

检查路径代码可以这么写:

	CString strPathPre = _T("D:\\work\\test")
	if (!PathIsDirectory(strPathPre)){
		CreateDirectory(strPathPre, NULL);
	}

上述可以正常在 work 文件夹下再创建一个 test 文件夹。

2 保存一个文件到 D:\work\test2\sub 路径下

再按照1那样使用 CreateDirectory 则发现没有创建想要的路径,因为 CreateDirectory 只能一级一级目录的创建,要先创建 test2 再创建 sub ,想要一步创建则需要这么写:
#include "imagehlp.h"
#pragma comment(lib,"imagehlp.lib")
CString strPathPre = _T("D:\\work\\test2\\sub")
if (!PathIsDirectory(strPathPre)){
	MakeSureDirectoryPathExists((LPCSTR)CStringA(strPathPre));
}
上述可以一步创建 D:\work\test2\sub 路径

3 保存到预先不确定的路径下

有时候需要用户自定义文档保存路径,有可能是 D:\work\test,有可能是 D:\work\test2\sub。
就是并不能确定是否创建在已有的文件夹下,还是已有文件夹下的2级,3级甚至更多级目录下,如D:\work\test2\sub\123\fff\222\21212

之前以为一个MakeSureDirectoryPathExists 就可以搞定一切了,然而并不是。

经测试 MakeSureDirectoryPathExists 只是用于创建已有路径下的2级以上目录,像D:\work\test2\sub\123\fff\222\21212 这样,如果创建 D:\work 下的1级目录 D:\work\test 发现其并不能创建成功。仍需要 CreateDirectory 来创建,所以综上,为稳妥起见只有这样写了:

//CString strPathPre = _T("D:\\work\\test2\\sub")
//strPathPre 由程序动态获取
if (!PathIsDirectory(strPathPre)){
	CreateDirectory(strPathPre, NULL);
	MakeSureDirectoryPathExists((LPCSTR)CStringA(strPathPre));
}
经测试这样可以保证一定能创建成功了。






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值