如何检查目录是否已存在于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);
Run Code Online (Sandbox Code Playgroud)
cas*_*nca 24
检查文件/目录是否存在的最简单方法是使用GetFileAttributes:
if (GetFileAttributes(newPath) == INVALID_FILE_ATTRIBUTES) {
CreateDirectory(newPath,NULL);
}
Run Code Online (Sandbox Code Playgroud)
请注意,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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30414 次 |
| 最近记录: |