菜鸟问题:如何判断一个文本文件是否存在?如果存在就打开添加一条新行?
如何判断一个文本文件是否存在?如果存在就打开添加一条新记录;
如果不存在就创建文本文件,然后添加新行。
我用这种方法,老是提示创建文件失败:
void CMainFrame::WriteLog(const char * msg)
{
if((msg=="")||(msg==NULL))
return;
char* str=(char*)malloc(strlen(msg)+2);
strcpy(str,msg);
strcat(str,"\n");
//if (LogFile==NULL)
LogFile="c:\\schVoice.txt";
CStdioFile file;
if(file.Open(LogFile,CStdioFile::modeNoTruncate|CStdioFile::typeText)==0)
{
char str[80];
strcpy(str,"创建文件");
strcat(str,LogFile);
strcat(str,"失败!");
AfxMessageBox(str);
free(str);
return;
}
file.SeekToEnd();
file.WriteString(str);
file.SetLength(file.GetPosition());
file.Close();
free(str);
}
问题点数:20、回复次数:7Top
1 楼subtop(南来北往)回复于 2004-05-04 18:39:26 得分 20
改成file.Open(LogFile,CFile::modeNoTruncate|CFile::typeText|CFile::modeWrite);Top
2 楼subtop(南来北往)回复于 2004-05-04 18:44:22 得分 0
http://expert.csdn.net/Expert/topic/2987/2987776.xml?temp=.4904444Top
3 楼baiyongchun(粒子)回复于 2004-05-04 18:47:16 得分 0
to:subtop(风歌) 大哥
我改成这样了:
file.Open(LogFile,CFile::modeNoTruncate|CFile::typeText|CFile::modeWrite);
但还是会弹出创建文件失败的对话框。
假如文件"c:\\schVoice.txt"存在的话,
一切正常。Top
4 楼subtop(南来北往)回复于 2004-05-04 18:53:42 得分 0
其实,有两种方法可以解决,一是文件存在就打开,否则就创建;不过这样好象有点麻烦。
另外一种就是打开文件标志用 CFile::modeCreate|CFile::modeNoTruncate|CFile::typeText|CFile::modeWrite
它就表示,如果文件存在就打开(但不把文件清空),不存在就创建Top
5 楼baiyongchun(粒子)回复于 2004-05-04 18:55:48 得分 0
to:subtop(风歌) 大哥:
CFile::modeCreate|CFile::modeNoTruncate|CFile::typeText|CFile::modeWrite
它就表示,如果文件存在就打开(但不把文件清空),不存在就创建
------------------------------
我用这个时,open()会返回0(文件不存在时),结果弹出创建文件失败的对话框,
不知怎么会事????????????????????????????Top
6 楼baiyongchun(粒子)回复于 2004-05-04 19:02:07 得分 0
CFile::modeCreate|CFile::modeNoTruncate|CFile::typeText|CFile::modeWrite
测试成功了!!
谢谢subtop(风歌) 大哥!Top
7 楼subtop(南来北往)回复于 2004-05-04 19:06:36 得分 0
:)Top




