A. MFC 每次向 ini 文件添加新内容时总是会清楚之前的内容,怎么解决
INI文件是属于程序配置文件,根本键名读取键值的,所以键名不能相同。否则在读取的时候就只能读取到相同键名的第一个键值。所以写入的时候会将键名相同的键值覆盖。如果你不想覆盖,很简单,只要给键名加序号就行了。比如
UINT m_uIndex = 0; //全部变量或成员变量
CString IniNameIndexStr;
IniNameIndexStr.Format(_T("Name_%d"),m_nIndex);
WritePrivateProfileString("Info",IniNameIndexStr,strId,"D:\\mfc\\commander.ini");
m_uIndex ++ ;
这样每次写入的时候都会使用一个新的键名
B. MFC CFileFind和CFile遍历一个指定文件夹并删除里面的所有文件(里面没有下层文件夹目录)问题
首先,不要用TCHAR,其次,你的for循环有问题,再者Remove函数只可删除文件,不可删除目录,而且你还没加异常判断。
void RemoveFileInDir(const char* dir) //比如 E:\\Test
{
char buff[256];
sprintf_s(buff,"%s\\*.*",dir);
CString name,path;
CFileFind find; BOOL bFind = find.FindFile(buff);
try{
while(bFind)
{
bFind = find.FindNextFile();
name = find.GetFileName();
if(find.IsDirectory() || name.Compare(".") == 0 || name.Compare("..") == 0)
continue;
path = find.GetFilePath();
CFile::Remove(path);
cout<<path.LPCTSTR();<<endl;
}
}catch(CFileException &e){
e.GetErrorMessage(buff,256);
cout<<buff<<endl;
}}
C. mfc中怎么清空txt文件中的里面内容 ,以及怎么把每次循环运行得到的数据依次存入到txt文件中,我想要程序
vector<string>a;//建一个vector对象
stringb;//用于循环存储.循环得到的数据
a.push_back(b);//把数据压入vector对象尾
ofstreamout_file("a.txt",ios_base::out);//C++文件流对象建立a.txt并用于输出
for(inti=0;i<a.size();i++
out_file<<a[i]<<endl;//循环写入加换行
D. 在MFC中怎么删除外存文件中的内容
CFile::Remove
static void PASCAL Remove(LPCTSTR lpszFileName);
throw(CFileException);
参数: lpszFileName 表示所需文件的路径字符串。路径可为相对或绝对,但不可包含网络名。
说明:
此静态函数删除由路径指定的文件,但不可移去一个目录。
如果相关联的文件打开或文件不可移去,则函数产生一个异常,它等价于DEL命令。
示例:
// example for CFile::Remove
char* pFileName ="test.dat";
TRY
{
CFile::Remove(pFileName);
}
CATCH(CFileException,e)
{
#ifdef _DEBUG
afxDump <<"File"<<pFileName<<"cannot be removed\n";
#endif
}
END_CATCH
E. MFC 如何删除目录下的所有文件
仅供参考:
boolDeleteDirectory(char*DirName)
{
HANDLEhFirstFile=NULL;
WIN32_FIND_DATAFindData;
charcurrdir[MAX_PATH]={0};
sprintf(currdir,"%s\*.*",DirName);hFirstFile=::FindFirstFile(currdir,&FindData);
if(hFirstFile==INVALID_HANDLE_VALUE)
returnfalse;
BOOLbRes=true;
while(bRes)
{
bRes=::FindNextFile(hFirstFile,&FindData);
if((FindData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))//发现目录
{
if(!strcmp(FindData.cFileName,".")||!strcmp(FindData.cFileName,".."))//.或..
continue;
else
{
chartmppath[MAX_PATH]={0};
sprintf(tmppath,"%s\%s",DirName,FindData.cFileName);
DeleteDirectory(tmppath);
}
}
else//发现文件
{
chartmppath[MAX_PATH]={0};
sprintf(tmppath,"%s\%s",DirName,FindData.cFileName);
::DeleteFile(tmppath);
}
}
::FindClose(hFirstFile);
if(!RemoveDirectory(DirName))
{
returnfalse;
}
returntrue;
}
F. MFC如何删除文件或文件夹
给你个删除目录的函数:
voidDeleteDirectory(CStringstrDir)
{
if(strDir.IsEmpty())
{
RemoveDirectory(strDir);
return;
}
//首先删除文件及子文件夹
CFileFindff;
BOOLbFound=ff.FindFile(strDir+_T("
\*"),0
);
while(bFound)
{
bFound=ff.FindNextFile();
if(ff.GetFileName()==_T(".")||ff.GetFileName()==_T(".."))
continue;
//去掉文件(夹)只读等属性
SetFileAttributes(ff.GetFilePath(),FILE_ATTRIBUTE_NORMAL);
if(ff.IsDirectory())
{
//递归删除子文件夹
DeleteDirectory(ff.GetFilePath());
RemoveDirectory(ff.GetFilePath());
}
else
{
DeleteFile(ff.GetFilePath());//删除文件
}
}
ff.Close();
//然后删除该文件夹
RemoveDirectory(strDir);
}