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);
}