gpt4 book ai didi

visual-c++ - 如何检查目录是否已存在于 MFC(VC++)?

转载 作者:行者123 更新时间:2023-12-04 04:50:47 33 4
gpt4 key购买 nike

如何检查目录是否已存在于 MFC(VC++) 中?
我正在使用下面的代码来获取当前的应用程序路径,并在那里创建 NDSLog 文件夹
这样我所有的日志文件都应该放在那里,现在我想检查 NDSLog 文件夹是否已经存在的条件,不要创建它。怎么做?

谢谢。

char strPathName[_MAX_PATH];
::GetModuleFileName(NULL, strPathName, _MAX_PATH);

// The following code will allow you to get the path.
CString newPath(strPathName);
int fpos = newPath.ReverseFind('\\');

if (fpos != -1)
newPath = newPath.Left(fpos+1);
newPath += "NDSLog\\" ;

CreateDirectory(newPath,NULL);

最佳答案

检查文件/目录是否存在的最简单方法是使用 GetFileAttributes :

if (GetFileAttributes(newPath) == INVALID_FILE_ATTRIBUTES) {
CreateDirectory(newPath,NULL);
}

请注意,该函数将返回 INVALID_FILE_ATTRIBUTES即使由于其他原因失败,例如没有访问文件的权限,因此您应该检查 CreateDirectory的返回值。以确保它成功。

实际上,您不需要检查目录是否已经存在; CreateDirectory如果目录已存在,将设置错误代码:
if (!CreateDirectory(newPath,NULL)) {
if (GetLastError() == ERROR_ALREADY_EXISTS) {
// directory already exists
} else {
// creation failed due to some other reason
}
}

关于visual-c++ - 如何检查目录是否已存在于 MFC(VC++)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4282599/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com