如何删除一个大的文件(超过1G)中的某一串字符?

tiancaiak 2009-04-19 05:32:54
请问如何删除一个大的文件(超过1G)中的某一串字符?

需求是这样咧:
目前正在做客户端的更新器,需要修改客户端的现有的资源压缩包,请问可有好的办法实现?
...全文
268 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiancaiak 2009-04-21
  • 打赏
  • 举报
回复
算是解决了,使用的方法大致与8楼的方法相同,我用了两个文件,一个把资源文件经过是打包压缩加密的资源压缩文件,另一个是该资源压缩文件的配置文件

资源压缩文件中按顺序存放压缩加密过后的每一个资源文件,配置文件就是存资源压缩文件中每个资源文件的起始位置和压缩后大小,解压后大小,文件名子等相关信息

然后如果要删除一个文件,只要删除配置文件中该文件的信息,不删除资源压缩文件中的该文件内容

当然删除一个文件这个操作需要把配置文件先删除再创建,但是配置文件不会很大,所以这点开销还是可以接受

时间久了,资源文件中会有垃圾,可以定期重建一次
liliangbao 2009-04-19
  • 打赏
  • 举报
回复
分块读入,查找,写入另一个文件,如此
最后删除原有文件,将另一个文件修改为原文件名~

不知有没有更高效办法~
等高手!
alan001 2009-04-19
  • 打赏
  • 举报
回复
分块操作吧
tiancaiak 2009-04-19
  • 打赏
  • 举报
回复
是windows
ltc_mouse 2009-04-19
  • 打赏
  • 举报
回复
支持8楼~~

lz可以在升级时考虑把配置文件改造下,就方便后续的维护了
sherrik 2009-04-19
  • 打赏
  • 举报
回复
关注
fibbery 2009-04-19
  • 打赏
  • 举报
回复

如果是纯粹的文本文件,而且没有结构,那么这个问题很麻烦,很有可能你要另写一份文件,然后再删除旧的文件。
像这样的需要随机删除的文件最好结构化,由各种区域、单元、元素构成,对于增删该都可以针对每个元素来操作。
例如:增加,只需要在文件末尾添加元素,删除,直接对元素作删除标记,修改,随机访问元素修改内容,一般要求每一个元素的长度应该是固定的,如果是不固定的元素长度可以采用在要修改的元素上作删除标记,在增加一个新的元素到文件末尾。
长时间维护该文件后,会产生垃圾元素,可以通过一个优化程序优化文件。一定要规划你的数据、规划你的文件结构。
[Quote=引用楼主 tiancaiak 的帖子:]
请问如何删除一个大的文件(超过1G)中的某一串字符?

需求是这样咧:
目前正在做客户端的更新器,需要修改客户端的现有的资源压缩包,请问可有好的办法实现?
[/Quote]
  • 打赏
  • 举报
回复
楼主发完贴,还没讲清楚就隐身了?

如果是linux系统,参考这个
http://www.lslnet.com/linux/dosc1/55/linux-369728.htm
liudanking 2009-04-19
  • 打赏
  • 举报
回复
关注中。知道了答案啊也告诉我一下呵
tangshuiling 2009-04-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jackyjkchen 的回复:]
如果你了解文件系统,直接该文件头应该就行了,将需要删除的部分剔除到文件之外,类似于指针操作
[/Quote]
1楼想的太过简单,直接修改文件头,假设文件为1.txt,你如何修改文件头达到删除中间字串内容
liliangbao 2009-04-19
  • 打赏
  • 举报
回复
帮顶~
  • 打赏
  • 举报
回复
什么平台?要在代码段里删除文件吗?
fallening 2009-04-19
  • 打赏
  • 举报
回复
参考下linux下的sed
jackyjkchen 2009-04-19
  • 打赏
  • 举报
回复
如果你了解文件系统,直接该文件头应该就行了,将需要删除的部分剔除到文件之外,类似于指针操作

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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