急急急!!超大文件操作问题

r11222 2010-03-24 04:08:11
现在要做一个文本编辑器

要适用与超大文件(2~4G)


我用createFileMapping 打开文件

我应该直接在createfilemapping 返回的 内存区编辑文件(实际应该在硬盘),还是应该把我要编辑的其中一部分 memcpy 到真正的内存??(考虑最高效)

另外,我要在这个文件中删去一行,或者添加一行,有什么超高效的办法??(用数据结构的知识) 有需要建立一个行列表吗?

我不是懒得想来问的,我想追求最高效的方法,谢谢各位!
...全文
186 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2010-03-25
  • 打赏
  • 举报
回复
不知参考Notepad++的源代码有没有用。
纠结的程序猿 2010-03-25
  • 打赏
  • 举报
回复
这件事情不容易做。如果你不是很牛的话,建议你还是不要做了。
1。确实需要一个数据结构来记录你删除的部分
2。确实需要一个数据结构来记录行列表。
你可以参考B树,但是仅仅用B树不能完全解决问题。
r11222 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cakes 的回复:]

1g以内的话可以考虑用文件映射
[/Quote]


答非所问。。郁闷。。。。
hshdld 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cakes 的回复:]
1g以内的话可以考虑用文件映射
[/Quote]
同意
cakes 2010-03-24
  • 打赏
  • 举报
回复
1g以内的话可以考虑用文件映射
r11222 2010-03-24
  • 打赏
  • 举报
回复
createfilemapping 后 还需要把其中一部分用memcpy 读入真正内存进行编辑吗?还是直接用 createfilemapping返回的文件指针编辑文件?
r11222 2010-03-24
  • 打赏
  • 举报
回复
顶,再求解答
pengxn 2010-03-24
  • 打赏
  • 举报
回复
注意很多操作文件的函数,输入的偏移量都是INT型的,不要越界
ForestDB 2010-03-24
  • 打赏
  • 举报
回复
加一层buffer,buffer以有效的数据结构组织之。
r11222 2010-03-24
  • 打赏
  • 举报
回复
爆顶。。。。。
。。。
。。。
r11222 2010-03-24
  • 打赏
  • 举报
回复
能说一说当时你是用什么策略去管理大文件吗??

其实我对createfilemapping 不是很了解

我现在的想法是,createfilemapping (文件2G,能成功吗?) ,然后 编辑哪一部分,就将那一部分memcpy到真正内存进行编辑(这样会多余吗?)

还有,在大文件中删除一行有什么好的策略???

高效高效高效
james_hw 2010-03-24
  • 打赏
  • 举报
回复
拆分成多个小文件管理。这是我工作中最终使用的方法。大文件实在很难管理,特别是修改。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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