当前位置:  技术问答>linux和unix

fopen打开的文件,如何实现当文件达到一定大小后,重头进行覆盖写入

    来源: 互联网  发布时间:2016-03-18

    本文导语:  我的那个文件要求记录5000条记录,超过5000条时,重头开始写入,用新的记录覆盖掉旧的记录。fopen就那几种打开方式,我试了下,好像都不支持。如果以“a+“的方式打开,然后用lseek去定位,然后再写入也不行,...

我的那个文件要求记录5000条记录,超过5000条时,重头开始写入,用新的记录覆盖掉旧的记录。fopen就那几种打开方式,我试了下,好像都不支持。如果以“a+“的方式打开,然后用lseek去定位,然后再写入也不行,仍然会加到文件尾。各位有没有什么好的方法解决啊?由于操作原因,open方式打开文件暂不考虑,希望可以用fopen方式打开。

|
楼主的要求实现其来有点问题,如楼上所讲,用fopen,w+打开,fseek移动定位能部分实现你的功能,但有一点
,仔细想一下,你回到开头覆盖写后,你的意思是要一条记录覆盖一条记录,这时你就要保证你的记录长度一样才行,如果新记录比原记录长,覆盖时就会覆盖下一条记录的一部分的;如果短,那就出现原记录覆盖不全,会留一个尾巴的。

实际上,这种方法的实现,一般是用两个文件交叉覆盖比较好。过程是这样的:
设置两个文件a,b
a文件写满后,写b,b写满后,回过头来清掉a,重新写a.如此反复。
你另外置个标志,记录当前是写的那个文件,已经写了多少条了。加载数据的时候,根据情况分别从a,b读取不同的数据。

|
第一次用r+打开


如果失败,表示文件不存在,再用w+打开


|
首先用r+打开.每次写完以后记录文件写的当前位置.当下次写的时候定位流到上次写的位置.
当写的行数>5000的时候就rewind.我试过了,用r+每次打开的时候不会删除原有的内容.

|
只有自己在程序中判断了,达到你要求的值时返回文件头。
但绝不能用a方式打开,a方式不管你当前文件指针在什么位置,在write()系统调用中会强置把文件指针置于文件尾,然后再写数据,即使多个进程写同一个文件它也会保证写在文件尾。

    
 
 

您可能感兴趣的文章:

  • fopen 打开一个文件多次突然失败
  • 奇怪的fopen问题,创建不了文件,错误号却返回0
  • fopen函数打不开一个郁闷的文件
  • 请问为何fopen()函数不能正确打开文件。
  • ARM平台下fopen打开文件出现段错误
  • fopen 不能打开文件
  • 为什么我用fopen打开两个不同的文件,得到相同的指针地址呢
  • 请教大家Linux下fopen最大能打开几G文件?
  • fopen()、fdopen()对应的删除文件的函数分别是什么?
  • 我在linux下用fopen打不开中文名的文件,请帮忙
  • 在Linux下怎样用fopen打开一个文件?
  • fopen的缓冲区是虚拟文件系统,还是在lib层?
  • 初学Unix,问:标准级函数,如fopen,fclose;系统级函数open,close,两者什么关系?(在一篇讲文件操作的文章中看到的)
  • c语言程序设计文件操作方法示例(CreateFile和fopen)
  • 进入守护进程后fopen创建文件失败
  • fopen 打开已存在的文件,报 No such file or directory
  • 程序调试问题,关于文件的fopen fclose fwrite的问题(在线等!)谢谢!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • codeblocks8.02 for linux,程序可以编译通过,但是通过右键“查找fopen函数的声明”或“实现”,都是提示“没有找到:fopen”,为什么
  • fopen问题请教
  • 关于fopen函数
  • linux程序关于fopen的疑问!
  • fopen能这么用吗?
  • open和fopen的区别?
  • fopen第二个参数-打开模式的问题
  • fopen出的错?
  • 想看fopen函数的源码
  • flock与fopen的问题?
  • 关于fopen,fread,fgets的问题,请教
  • 关于fopen以及编码的问题
  • Solaris上fopen的问题
  • 请教 ,为什么fopen("./hzk16", "rb")总返回NULL
  • 有关fopen的问题
  • PHP fopen()和 file_get_contents()应用与差异介绍
  • fopen奇怪问题
  • ARM板上运行fopen函数出错
  • VC下实现fopen支持中文的方法
  • open与fopen,read与fread用哪个比较好?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3