【发布时间】:2013-08-06 10:25:34
【问题描述】:
我希望能够在 C++ 中编辑二进制文件的内容,并删除直到某个字符位置的所有内容,我已经知道,有点像从文件中删除标题。
我有一个示例文件包含 130 万字节,我想删除前 38,400 个字节,然后以原始名称保存文件。
目前,我一直在进行缓冲读取以找到每个文件的位置(剪切文件的规则很复杂,这不是简单的搜索),当然,我可以再做一次缓冲读取从 pos,输出到一个新文件,然后进行重命名,或者类似的事情。
但是不得不复制整个文件感觉相当沉重。有什么方法可以让操作系统(仅限 Windows Vista 及更高版本 - 不需要跨平台)重新定位文件的开头,并回收那些 38,400 字节?唉,我找不到办法,所以我要请你帮忙:)
非常感谢您提供的任何帮助。
【问题讨论】:
-
复制整个文件是否耗时过长?
-
它并没有超出我的预期,但有些文件超过了 2GB,所以也不小。无论如何,非常感谢大家的帮助。非常感谢:)
-
我刚刚找到了一些关于为什么它没有实现的进一步解释:blogs.msdn.com/b/oldnewthing/archive/2010/12/01/10097859.aspx