保存内容到文件中?CFile如何增量保存

adwork 2003-02-09 09:35:38
比如有一个CString变量m_csData,我想把它的内容保存到文件myFile中,m_csData的内容最初是从myFile读取来的,由于这个字符串可能很大,但改变很少,该如何保存?
我现在是使用CFile::modeCreate|CFile::modeWrite来打开myFile的,这样每次都把原来内容清空了,如何只修改myFile中应该改变的部分,而不是全部清空?
...全文
149 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluewood_cn 2003-03-10
  • 打赏
  • 举报
回复
具体怎么实现的,能说具体点吗。
我是用CStdioFile 打开,一行一行的读取,然后修改部分字段,然后保存,我只是想保存
修改过的行,可以解决吗!!
谢谢了
DoItFreely 2003-02-09
  • 打赏
  • 举报
回复
直接WriteFile(),SetEndOfFile()就得了,除非你自己已经知道哪些改了哪些没改,否则……没谁给你自动实现这个“智能”
adwork 2003-02-09
  • 打赏
  • 举报
回复
我不是追加,如果修改了任意部分呢

CEditView中的保存是如何实现的???
用户 昵称 2003-02-09
  • 打赏
  • 举报
回复
seektoend
nbgyf 2003-02-09
  • 打赏
  • 举报
回复
楼上的同志们不是帮你已解决了吗!

当然你也可用C语言的 FILE ,它有Append 功能,用Append打开,写入即可;
具体请查看MSDN
zhaowuqing 2003-02-09
  • 打赏
  • 举报
回复
//追加模式添加内容
CString strInfotype,str;
CTime tm=CTime::GetCurrentTime ();
CString strTime=tm.Format ("%Y/%m/%d %H:%M:%S");
switch(infotype)
{
case 0:
strInfotype="普通消息";break;
case 1:
strInfotype="警告消息";break;
case -1:
strInfotype="错误消息";break;

}
str="\r\n"+strInfotype+strTime;
f.Open (".\\D160AOP.LOG",CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate);
f.SeekToEnd ();
f.Write (str,str.GetLength ());
f.Close ();
adwork 2003-02-09
  • 打赏
  • 举报
回复
有没有直接保存的函数,智能化的根据要保存的内容和已有的内容而自动确定是如何保存呢?
Document/View中的保存是如何实现的,也是全部重写吗?这样磁盘的写频率太频繁了吧,能好吗?
Phourm 2003-02-09
  • 打赏
  • 举报
回复
用CFile::modeCreate|CFile::modeReadWrite
找到改变的位置,Seek到那里Write你的新数据,如果你的长度改变了,那么这之后的全部文件要重写!如果你的文件大小常常是变化的,建议你还是全部重写,省去代码量,当然你可以在文件尾巴记录你的改变信息,这样你可以在比较必要的时候一次重新生成你的保存文件!
adwork 2003-02-09
  • 打赏
  • 举报
回复
用WriteFile()就可以了,我一直没想这个函数,谢了先,结分

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧