3819|3

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

VxWorks文件截取 [复制链接]

 大家好,请教问题如下:
文件系统是 DosFd
需要截取文件
比如一个4M的文件,我想把后面的1M删掉,只保留前3M内容,我可以直接调用ftruncate(fd, leng)实现,而且系统开销非常小;
另外一个情况,我想把文件前面的1M删掉,只保留后面3M内容,此时我不知道有没有系统函数支持,我的实现方法是:fseek()到文件1M处,然后fread()后面3M的内容到另外一个文件temp.dat,删除原文件,将temp.dat改名。这样虽然可以实现,但是系统开销比较大。整个文件管理过程,有很长一段时间2个文件都是打开的,而且fseek()和fread()的开销都很大,在文件比较大时更明显。
我想请问,如果我想截掉文件前面部分内容,有没有类似ftruncate()的系统函数?
或者,有更加巧妙的节约开销的方法?
由于是嵌入式,所以开销太大时效果不好。
谢谢高手,给点指导!

最新回复

貌似没有比1楼更好的方法了。  详情 回复 发表于 2008-7-25 11:30
点赞 关注
 

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
好象没有其他好的方法,但是对于你的实现至少有一点是可以提高的,你在文件系统中创建temp.dat,然后改名,这样的操作效率太低.
不要创建temp.dat,将后面3M内容读出来放在内存中,当然,这要内存够才行. 然后将以0的为长度trancate,再把内存中的数据写回文件, 这样效率肯定高多了.
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
感谢楼上的指点。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 
貌似没有比1楼更好的方法了。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表