CFile 类 文件操作 应用日志
我在做项目时,用到CFile 类时,遇到的几个问题,并最终解决了,现在记录下来 ,以后遇到类似问题,可拿来参考!
1. 或得当前 程序的路径:
CString str,strError,DocPathName;
CFile file;
TCHAR exeFullPath[MAX_PATH]; // MAX_PATH
GetModuleFileName(NULL,exeFullPath,MAX_PATH);// 或得程序模块 路径;
int NameLen=(int)wcslen(exeFullPath);
while(exeFullPath[NameLen]!='//')
{
exeFullPath[NameLen--]='/0';
}
DocPathName=exeFullPath;
DocPathName+="Setup.ini";
m_SetFileName=DocPathName;
CFileFind m_file;
BOOL bWorking=m_file.FindFile(DocPathName);
if(bWorking)
{
m_file.FindNextFileW();
}
else
{
str=DocPathName;
m_SetFileName=str;
ConLib m_file;
m_file.CreateFileData(str,strError);
SetFileAttributes(m_SetFileName,FILE_ATTRIBUTE_HIDDEN);// 设置文件为隐藏属性;
}
2: 设置文件系统属性是,注意事项;
当设置文件为隐藏属性时, SetFileAttributes(m_SetFileName,FILE_ATTRIBUTE_HIDDEN);//
文件再次写入时,会打开时失败;
f(file->Open(sFileName,CFile::modeWrite | CFile::modeCreate,&e))
{
//创建 打开时会失败,所以在打开操作之前 设置 为正常属性
// SetFileAttributes(m_SetFileName,FILE_ATTRIBUTE_NORMAL);//
}
3 文件以 CFile::modeWrite 打开时 ,原来的内容不会察除,
只有 CFile::modeWrite | CFile::modeCreate 呆创建属性才会被察除;