如何判断一个文本文件是否存在?如果存在就打开添加一条新记录;
如果不存在就创建文本文件,然后添加新行。
我用这种方法,老是提示创建文件失败:
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);
}

解决方案 »

  1.   

    改成file.Open(LogFile,CFile::modeNoTruncate|CFile::typeText|CFile::modeWrite);
      

  2.   

    http://expert.csdn.net/Expert/topic/2987/2987776.xml?temp=.4904444
      

  3.   

    to:subtop(风歌) 大哥
    我改成这样了:
    file.Open(LogFile,CFile::modeNoTruncate|CFile::typeText|CFile::modeWrite);
    但还是会弹出创建文件失败的对话框。
    假如文件"c:\\schVoice.txt"存在的话,
    一切正常。
      

  4.   

    其实,有两种方法可以解决,一是文件存在就打开,否则就创建;不过这样好象有点麻烦。
    另外一种就是打开文件标志用 CFile::modeCreate|CFile::modeNoTruncate|CFile::typeText|CFile::modeWrite
    它就表示,如果文件存在就打开(但不把文件清空),不存在就创建
      

  5.   

    to:subtop(风歌) 大哥:
    CFile::modeCreate|CFile::modeNoTruncate|CFile::typeText|CFile::modeWrite
    它就表示,如果文件存在就打开(但不把文件清空),不存在就创建
    ------------------------------
    我用这个时,open()会返回0(文件不存在时),结果弹出创建文件失败的对话框,
    不知怎么会事????????????????????????????
      

  6.   

    CFile::modeCreate|CFile::modeNoTruncate|CFile::typeText|CFile::modeWrite
    测试成功了!!
    谢谢subtop(风歌) 大哥!