CArchive与CFile有什么区别的?

嬴政爱天下 2012-02-11 09:25:24
刚刚翻看MFC类库介绍的时候,发现了CArchive这个类,看了上面说明,有点儿疑惑了

他这与CFile的区别是什么?


CArchive允许以一个永久二进制(通常为磁盘存储)的形式保存一个对象的复杂网络,它可以在对象被删除时,还能永久保存。可以从永久存储中装载对象,在内存中重新构造它们。使得数据永久保留的过程就叫作“串行化”。


郁闷了。。

求给解答一下
...全文
124 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
嬴政爱天下 2012-02-12
  • 打赏
  • 举报
回复
这样啊。昨晚郁闷半天,搞不懂 既然读写了,有了Cfile干嘛还提供这个 Carchive类..
结贴..待会找资料看看怎么用..
向立天 2012-02-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 heksn 的回复:]
一、使用CFile的Read()函数和Write()函数读写文件

二、使用CArchive类的Read()和Write()函数进行缓冲读写,

创.建CArchive对象前必须先建CFile对象,CArchive要用到CFile对象.

CArchive对象提供了一个类型安全缓冲机制,用于将可序列化对象写入 CFile 对象或从中读取可序列化对象。通常,CFile 对象表示磁……
[/Quote]就是它了
其实CArchive相比CFile就是多了一个缓冲机制
一般处理比较大的文件或相对频繁的读写操作用CArchive比较合适
  • 打赏
  • 举报
回复
一、使用CFile的Read()函数和Write()函数读写文件

二、使用CArchive类的Read()和Write()函数进行缓冲读写,

创.建CArchive对象前必须先建CFile对象,CArchive要用到CFile对象.

CArchive对象提供了一个类型安全缓冲机制,用于将可序列化对象写入 CFile 对象或从中读取可序列化对象。通常,CFile 对象表示磁盘文件;但是,它也可以是表示“剪贴板”的内存文件(CSharedFile 对象)。

给定的 CArchive 对象要么存储数据(即写入数据或将数据序列化),要么加载数据(即读取数据或将数据反序列化),但决不能同时进行。CArchive 对象的寿命只限于将对象写入文件或从文件读取对象的一次传递。因此,需要两个连续创建的 CArchive 对象将数据序列化到文件,然后从文件反序列化数据。

将数据序列化到存档时,存档积累数据,直到其缓冲区被填满为止。然后,存档将其缓冲区写入 CArchive 对象指向的 CFile 对象。同样,当您从存档中读取数据时,存档会将数据从文件读取到它的缓冲区,然后从缓冲区读取到反序列化的对象。这种缓冲减少了物理读取硬盘的次数,从而提高了应用程序的性能。
qualcode 2012-02-11
  • 打赏
  • 举报
回复
第一次看我也没看懂,当然现在也没多明白,主要是我没用过。觉得CArchive存储简单些。
Eleven 2012-02-11
  • 打赏
  • 举报
回复
http://blog.csdn.net/movayhust/article/details/4417193

16,471

社区成员

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

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

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