如何快速替换/修改大文件其中的一行?
时间:2010-07-14
来源:互联网
如果文件较大,几百兆或者上G,但是只需要替换/修改其中的某一行,如何才能速度更快?能不能不全读出,只读取需要的数据,然后修改保存之?


作者: donglongchao 发布时间: 2010-07-14
作者: samlumengjun 发布时间: 2010-07-14
作者: srdgame 发布时间: 2010-07-14
没有办法,设计的时候就不要设计成这样。 现在打多数文件系统,都没有很好的支持 “插人,修改一行“ 这种语意。
作者: peidright 发布时间: 2010-07-14
samlumengjun 发表于 2010-07-14 17:58
mmap会将文件全部读入内存吧。有没有方法只读取修改需要的数据呢?
作者: donglongchao 发布时间: 2010-07-14
没有办法,设计的时候就不要设计成这样。 现在打多数文件系统,都没有很好的 ...
peidright 发表于 2010-07-14 18:04
为什么没有设计支持这种操作呢?恩,需要特殊的文件系统吧?
作者: donglongchao 发布时间: 2010-07-14
找到你要的修改的文件偏移量,在mmap的时候也作相应偏移.
作者: samlumengjun 发布时间: 2010-07-14
比如只修改第三行,可以读取前三行,就可以查找到了吧。
作者: donglongchao 发布时间: 2010-07-14
本来那一行的长度是 10, 但是你要插入的长度,或者大于10,或者小于10, 那你怎么办?
如果你的应用那层没设计好,就只能这样 ”读取后面的所有数据, 再重新写入磁盘“
作者: peidright 发布时间: 2010-07-14
我的意思是能不能不要一次性全部读出来到内存里。
作者: donglongchao 发布时间: 2010-07-14
mmap 不写,不会读到内存的
作者: peidright 发布时间: 2010-07-14
建议你man一下mmap, 比如你要修改的地方在文件100个字节偏移处,要修改10个字节,那么你就从100个字节偏移处mmap,长度10个字节.
作者: samlumengjun 发布时间: 2010-07-14
不止是修改,如果希望在某个地方插入数据,即改变文件长度,是不是还是不行?
作者: donglongchao 发布时间: 2010-07-14
作者: mirnshi 发布时间: 2010-07-14
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28