游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2467|回复: 7

文件操作技巧1 纠错

[复制链接]

17

主题

201

帖子

242

积分

中级会员

Rank: 3Rank: 3

积分
242
QQ
发表于 2005-3-1 09:37:00 | 显示全部楼层 |阅读模式
经过一段时间的实践,我最终还是被事实说服了,上一贴,说"两套函数各自
保存一个文件指针",这是正确的,但,就像 "ljm" 说的,fwrite(以下称为1f) 这一套有缓冲,write(以下称为2f)也有,但write不是直接写入,是使用了fwrite的缓冲,(或者说1f使用了2f的缓冲,总之是共用一个缓冲),因此 2f 和 1f 相互影响,当缓冲写玩了(4096),他们就会将缓冲写入文件,之后呢,清除缓冲,接下来的事情足以使想法夭折,他们将指针重置,同时 + 4096(缓冲大小),...
  看来,想维护"2f在前面写,1f在后面接着写",只有一个办法可以使用,就是增大文件缓冲.使用setbuf,setvbuf...
  不过,这样就会使得操作的数据容易丢失,因为,在写入文件之前,数据必须
都在缓冲中,看来,还需要新的血液来补充这个想法....
                                                                        ... ... 待续

8

主题

111

帖子

163

积分

注册会员

Rank: 2

积分
163
发表于 2005-3-1 11:01:00 | 显示全部楼层

Re:文件操作技巧1 纠错

这样玩太玄了吧.
不能依赖底层是怎么实现的.而且底层有可能会变.你只能依赖接口,不然你的程序就比较难通用.除非你能搞到底层的源代码,还能 编译,并加到你的项目里去.

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2005-3-1 15:19:00 | 显示全部楼层

Re:文件操作技巧1 纠错

文件操作就是麻烦,今天写几个函数,一会对一会错,搞的我郁闷死了

9

主题

151

帖子

153

积分

注册会员

Rank: 2

积分
153
发表于 2005-3-1 19:19:00 | 显示全部楼层

Re:文件操作技巧1 纠错

接下来的事情足以使想法夭折,他们将指针重置,同时 + 4096(缓冲大小),...

-----------这里为什么会使想法夭折?我不大明白……能否详细点?

17

主题

201

帖子

242

积分

中级会员

Rank: 3Rank: 3

积分
242
QQ
 楼主| 发表于 2005-3-2 09:57:00 | 显示全部楼层

Re: Re:文件操作技巧1 纠错

lovecpp: Re:文件操作技巧1 纠错

接下来的事情足以使想法夭折,他们将指针重置,同时 + 4096(缓冲大小),...

-----------这里为什么会使想法夭折?我不大明白……能否详细点?



那么,为了延续这个方法,必须使用很大的文件缓冲,可是,
1。缓冲是有限的
2。数据一直保存在缓冲中,非常危险,比如死机等,容易造成数据丢失
3. 只要来一个 "fflush",那么整个缓冲将发生两件事,
    (1).缓冲数据被保存到硬盘,之后清空
    (2).缓冲的指针被重置,对于1f函数,他是正确的,但是2f函数
         指针增加的量却是非常巨大的,他和1f保持同步,并不会
        保持在他应该在的位置.
        比如 : 1f 写到 230, 2f写到14,...当1f突然超出缓冲, 比如
        写到 4200, 2f本来应该写到 20, 但是,因为要于1f同步,
        2f 指到了 4096+20 ,就是 4116,这样,2f再写数据,就不可能
        接着 20 这个位置写.

9

主题

151

帖子

153

积分

注册会员

Rank: 2

积分
153
发表于 2005-3-2 19:03:00 | 显示全部楼层

Re:文件操作技巧1 纠错

我还是没怎么明白为什么需要更大的缓冲区?

17

主题

201

帖子

242

积分

中级会员

Rank: 3Rank: 3

积分
242
QQ
 楼主| 发表于 2005-3-2 19:09:00 | 显示全部楼层

Re: Re:文件操作技巧1 纠错

lovecpp: Re:文件操作技巧1 纠错

我还是没怎么明白为什么需要更大的缓冲区?


如果写入的数据超过文件缓冲,那么,缓冲中的数据就会
被强制写入硬盘,之后,文件指针(2f)就会受到1f的影响
。。。

9

主题

151

帖子

153

积分

注册会员

Rank: 2

积分
153
发表于 2005-3-2 19:53:00 | 显示全部楼层

Re:文件操作技巧1 纠错

哦~翻了以前的帖子明白了……
是说加入你用2f写了一些数据接着用1f写数据。结果给满了。于是再用2f写数据就会有问题吧?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-24 12:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表