最近在写一个小的应用,要把指定类型的文件扫描出来,然后删除。我把要删除的文件类型和可以使用的文件类型保存在一个ini文件中,这里遇到一个问题:当程序第二次运行的时候,要删除的文件类型或者可以使用的文件类型可能有一个是不正确的,因为我已经在程序中清空了的。后来发现了问题原因,如果你的ini文件中某个key对应的value如果不存在,那么记得清空该value,否则你上次写入的记录还在,再次读取的时候就读取的还是上次的!
list<CString>::iterator iter_beg = m_listAvailableType.begin(),
iter_end = m_listAvailableType.end();
CString strTmp;
while (iter_beg != iter_end)
{
strTmp += *iter_beg++ + _T(" ");
}
if (0 == ::WritePrivateProfileString(_T("extensions"), _T("available"),
//这里记得清空:如果没有这种类型的文件!如果没有清空,上次的记录还在文件中保存着
strTmp.IsEmpty() ? NULL : strTmp,
_T(".\\config.ini")))
{
TRACE(_T("GetLastError(): %d\n"), GetLastError());
}
strTmp.IsEmpty() ? NULL : strTmp这个判断显得很重要,这保证每次的读取工作都正确