CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

菜鸟问题:如何判断一个文本文件是否存在?如果存在就打开添加一条新行?

楼主baiyongchun(粒子)2004-05-04 18:32:58 在 VC/MFC / 基础类 提问

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

相关问题

  • [菜鸟弱问]怎样判断一个文本文件使用的是什么编码?(GBK? UTF8? BIG5等等)
  • 怎么才能多次向文本文件添加记录!!???
  • 如何判断文本文件的空行?
  • 怎么判断一个文本文件是否打开?
  • 如何判断一个文本文件的内容为空?
  • 怎样判断一个文本文件中的数据。
  • 如何判断文本文件 .txt的结束标志?
  • 有谁知道如何判断一个文本文件为空?
  • 判断文本文件是否读到了结尾?
  • 读取文本文件时,怎样判断文件结束?

关键词

  • 文件
  • cfile
  • modenotruncate
  • 文本文件
  • 存在
  • typetext
  • modewrite
  • subtop
  • 打开
  • 添加

得分解答快速导航

  • 帖主:baiyongchun
  • subtop

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo