CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

打开文件写入内容怎样才能不覆盖以前的内容?

楼主homor(我)2002-05-16 21:15:27 在 VC/MFC / 基础类 提问

我想用CFile的Open函数打开一个文件,如果文件不存在则创建之并写入内容,如果文件已存在则接在原有内容后面写入内容。请问Open函数的打开方式应该怎么设置?  
  我试了一下,发现好像只要用了modeCreate就会覆盖原有的内容。 问题点数:20、回复次数:8Top

1 楼dyugao(晕头转向)回复于 2002-05-16 21:19:34 得分 0

呵呵~  
  先看看那个文件在不在(当然实用程序看了)  
  然后决定用不用modeCreate就好了啊。Top

2 楼homor(我)回复于 2002-05-16 21:59:18 得分 0

这个方法是可以,不过我那个打开文件的程序要多次调用,每次都先检查文件是否存在是不是时间花销大了点。我觉得用合适的打开方式应该可以做到的吧。哪位大侠指教一下。Top

3 楼yes_start(刚刚开始)回复于 2002-05-16 22:24:23 得分 0

if   exist  
        modeWrite  
  else  
        modeWrite|modeCreate  
   
  if   open   many   times   ,perhaps   you   can   use   a   global   variable(?),   but   you   also   need   test   if   can   write   successful  
   
  ok!?  
  Top

4 楼homor(我)回复于 2002-05-16 22:33:23 得分 0

我同时使用modeCreate和modeNoTruncate参数,结果虽然并没有把原有文件的内容截为空,却是在原文件的开头写新数据的,能不能接在原来数据的后面写新的数据呀?Top

5 楼cadinfo(无语清风)回复于 2002-05-16 22:45:24 得分 5

那么使用追加模式呢?  
   
  代码1.(纯C)  
  FILE   *fp;  
  if((fp=fopen("",""))==NULL)  
  {  
          printf("can't   append/or   create   file\n");  
          return;  
  }  
  else  
  {  
          .....  
  }  
   
  代码2.C++,MFC  
  TRY  
  {  
          CFile   file(   "strPathName",   CFile::modeCreate|CFile::modeNoTruncate   );  
   
   
  }  
  CATCH(CFileException,   pEx)  
  {  
          pEx->ReportError();  
  }  
  END_CATCH  
   
  MSDN   是最好的老师!  
   
   
   
  Top

6 楼cadinfo(无语清风)回复于 2002-05-16 22:47:38 得分 5

刚才纯C里面,打开模式"a",意思为appending   即追加。Top

7 楼zdhe(zdhe)回复于 2002-05-16 23:30:07 得分 10

what   you   use:  
   
  c   runtime   :   fopen   (..,   "a")    
   
   
  for   sdk:   CreateFile   use   OPEN_ALWAYS   and   SetFilePoiner(Ex)   use   FILE_END   shift   0.  
   
  other   method   in   MFC  
   
  CFile:   if   exist   after   success   open,   call   CFile::SeekToEnd    
  ....  
  Top

8 楼homor(我)回复于 2002-05-17 15:05:37 得分 0

hehe,非常感谢zdhe,用SeekToEnd是个好主意。Top

相关问题

  • 文件写入
  • 写入文件的数据,打开是乱码,怎么办???
  • 怎么向文件写入数据,并且不覆盖原来的数据?
  • 怎样覆盖写文件(当原文件比要写入的数据量小时)?
  • 怎么用c#在打开一个word文件后写入图片
  • 以二进制方式打开文件,写入的文件怎么还是文本格式?
  • 用javascript打开一个本地硬盘上的xml文件,写入内容,并存成新的文件?
  • 我把一个字符写入文件后,打开被写的文件,总是在写入的字符串上多了个“”!为什么?
  • 用fstream打开文件写入数据后关闭;可是要写入的文件原来不存在的情况下,并没有创建出来。怎么办?
  • 我向文件中写入记录,为何后面写的总是覆盖前面写的???

关键词

  • 文件
  • 内容
  • 数据
  • 写入
  • 打开
  • modecreate
  • cfile
  • 原有
  • 存在
  • open

得分解答快速导航

  • 帖主:homor
  • cadinfo
  • cadinfo
  • zdhe

相关链接

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

广告也精彩

反馈

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