社区
其它技术问题
帖子详情
windows下怎么快速修改大文件?
Athrob
2011-03-26 10:47:16
怎么能快速在一个超大文件前面插入一小段数据
比如在一个1G的文件前面插入2M数据,时间不超过10秒
如果read然后 write到新文件也太慢了
用内存映射好像没办法改变大小?
有没有比较快速的办法?
...全文
222
15
打赏
收藏
windows下怎么快速修改大文件?
怎么能快速在一个超大文件前面插入一小段数据 比如在一个1G的文件前面插入2M数据,时间不超过10秒 如果read然后 write到新文件也太慢了 用内存映射好像没办法改变大小? 有没有比较快速的办法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Athrob
2011-03-27
打赏
举报
回复
看来直接操作大文件快速添加删除数据是行不通了.只有自己定义个索引表然后处理了.
结贴了.
Athrob
2011-03-26
打赏
举报
回复
[Quote=引用 13 楼 lactoferrin 的回复:]
它是内存映射复制文件,并在新文件添加内容,一个快字也没有
[/Quote]
晓得了,那看来修改大文件要么就用read+write重新写出一份
要么就直接在原文件尾部添加了.
Lactoferrin
2011-03-26
打赏
举报
回复
它是内存映射复制文件,并在新文件添加内容,一个快字也没有
Athrob
2011-03-26
打赏
举报
回复
[Quote=引用 9 楼 lactoferrin 的回复:]
引用 7 楼 plwxbm 的回复:
引用 6 楼 lactoferrin 的回复:
内存映射并不能增加存取硬盘的速度,只是某些情况下能更好的管理文件缓冲区,有很多人说内存映射是操作内存,绕过了硬盘io,这是完全错误的
所以那个1G的映射直接转到新文件去也不会有什么好处,且内存映射不是针对把大文件扫描一遍的操作
那到底有什么办法可以快速修改一个大文件在其前面插入部分数据?
没……
[/Quote]
那看来是没办法了.那网上写的利用内存映射快速修改大文件,在前面插入1段数据有啥用.
链接:http://www.vckbase.com/document/viewdoc/?id=1831
Lactoferrin
2011-03-26
打赏
举报
回复
创建文件和删除文件是快的,因为只需操作较少的数据,无需处理文件的数据部分
Athrob
2011-03-26
打赏
举报
回复
[Quote=引用 8 楼 lthyxy 的回复:]
1G,10秒.
[/Quote]
我记得有次我用文件映射瞬间创建了一个1G大小的文件,当然内容是随机的.
pps的临时文件应该也是这个原理吧.
只不过我忘了当时具体怎么弄的了.
Lactoferrin
2011-03-26
打赏
举报
回复
[Quote=引用 7 楼 plwxbm 的回复:]
引用 6 楼 lactoferrin 的回复:
内存映射并不能增加存取硬盘的速度,只是某些情况下能更好的管理文件缓冲区,有很多人说内存映射是操作内存,绕过了硬盘io,这是完全错误的
所以那个1G的映射直接转到新文件去也不会有什么好处,且内存映射不是针对把大文件扫描一遍的操作
那到底有什么办法可以快速修改一个大文件在其前面插入部分数据?
[/Quote]
没有,文件的存储结构决定这样做是一般不可行的,必须把后面的数据整体移位
对于数据大小是簇大小的整数倍的可以,但是这是特殊情形,操作系统也就没有支持
liutengfeigo
2011-03-26
打赏
举报
回复
1G,10秒.
Athrob
2011-03-26
打赏
举报
回复
[Quote=引用 6 楼 lactoferrin 的回复:]
内存映射并不能增加存取硬盘的速度,只是某些情况下能更好的管理文件缓冲区,有很多人说内存映射是操作内存,绕过了硬盘io,这是完全错误的
所以那个1G的映射直接转到新文件去也不会有什么好处,且内存映射不是针对把大文件扫描一遍的操作
[/Quote]
那到底有什么办法可以快速修改一个大文件在其前面插入部分数据?
Lactoferrin
2011-03-26
打赏
举报
回复
内存映射并不能增加存取硬盘的速度,只是某些情况下能更好的管理文件缓冲区,有很多人说内存映射是操作内存,绕过了硬盘io,这是完全错误的
所以那个1G的映射直接转到新文件去也不会有什么好处,且内存映射不是针对把大文件扫描一遍的操作
Athrob
2011-03-26
打赏
举报
回复
我在想是不是可以创建一个空白文件的内存映射,这个空白文件初始化为新的大小(可以预算)
然后那个1G的映射直接转到新文件去?与1M的合并?
还是没思路 脑袋乱乱的
Athrob
2011-03-26
打赏
举报
回复
比如原文件1G 要在任意地方(不是末尾)插入1M的数据.
用内存映射好像只能映射原文件大小吧.不能增加长度.
插入后原文件就变为1.01G了.或者将两个文件合并为新文件也可以,但是速度要快.
Lactoferrin
2011-03-26
打赏
举报
回复
往后添加数据方便,但是往前添加数据就麻烦
我现在只想到直接操作文件系统底层结构的方法
c_losed
2011-03-26
打赏
举报
回复
只想到内存映射
分段读取也可以考虑
c_losed
2011-03-26
打赏
举报
回复
用内存映射好像没办法改变大小?
可以的
企业十大应用-zabbix运维监控
企业环境下应用最广泛的zabbix分布式监控服务,课程内容的设计 非常适合新手在企业环境中应用部署zabbix。全面涵盖企业环境下使用最广泛的监控项设 置 包括unix、 linux、
windows
的网络状态、 端口状态、 服务器健康状态、 微信警报、 触发器、等...课程内容。是小白
快速
上手zabbix的好课。
windows
下cmd
快速
生成大
文件
命令
【代码】
windows
下cmd
快速
生成大
文件
命令。
windows
下
快速
创建大
文件
windows
下
快速
创建大
文件
F:/>fsutil file createnew wu 20480000000 已创建
文件
F:/wu 也可以使用API SetEndOfFile
WEB服务
修改
IIS大
文件
“上传”“下载”
文件
大小限制(转载:http://hi.baidu.com/163kexu/blog/item/c756f9d9850892ee39012fde.html)
WEB服务
修改
IIS大
文件
“上传”“下载”
文件
大小限制 上传
文件
大小限制
修改
: 1 、关闭 iis admin service 服务。 2、 找到
windows
\system32\inesrv\ 下的 metabase.xml
文件
。 3、 用纯文本方式打开,找到
测试工程师之MongoDB
快速
实战
针对测试工程师以及在mongodb方面没有任何经验的童鞋。非这些人群请自动忽略课程中的内容为了便于大家理解记忆会和mysql进行对比,所以没有任何mysql基础的同学建议先学习mysql这样理解起来更容易。mongodb的搭建是在linux下的,因为企业里都是在linux下用没有在
windows
下用的,所以没有任何linux基础的同学建议先学习linux的基本知识
其它技术问题
3,882
社区成员
9,059
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章