我在Windows上有一个文件。我用C++编写。我有一个问题,我需要从文件末尾删除一些字节。我正在使用ifstream,但我不知道如何删除这些字符,简单地把'\ 0'放在文件中或什么?更改二进制文件
更改二进制文件
回答
Linux机器上,使用截断(): http://linux.die.net/man/2/truncate
在Windows机器上,使用SetEndOfFile():
http://msdn.microsoft.com/en-us/library/aa365531%28v=vs.85%29.aspx
两者都依赖于操作系统的调用。
对窗口使用SetEndOfFile。我需要找到我想要结束的地方,然后使用该方法?如果我再次打开它并转到EOF,它将成为新的尺寸? –
更新...查看链接。它写道,你需要寻找你想要你的'EOF'的地方。 –
为什么不截断文件?看看chsize()
方法。
我没有在ifstream –
的API中看到它不是iostream的一部分,它是一个与文件调用的独立方法 - 它将调整文件的大小(并因此删除尾部字节 - 这可能是您想要的吗? ) – Nim
使用chsize for windows。如果我再次打开它并转到EOF,它将成为新的尺寸? –
您不能移动更改文件的大小;唯一的方法是将文件复制到临时文件,然后删除原始文件并重命名临时文件。
如果仅仅是截断文件的情况,Windows和Unix(但不一定是其他系统)都有系统级功能可以做到这一点,但标准中没有任何支持它的东西。如果最终不得不删除最后的字节,Windows和Unix都不允许它(尽管其他一些系统至少在特定情况下)。
我只需要做到最后,而不是在中间或开始。我的问题是,如果我在Windows中使用它,操作系统的所有其他内部参数是否会更新? –
如果你愿意使用boost,1.46支持现在应该允许一定程度的可移植性的'resize()'方法 - 为什么它从一开始就不被包含是一个谜... – Nim
@Roman如果你使用系统相关功能,它将执行系统指定的功能。如果系统规范声明它截断了该文件,那么它会截断该文件(或者系统中存在缺陷)。 –
- 1. cvs2svn更改二进制文件
- 2. 更改上传二进制文件场
- 3. 修改二进制文件
- 4. 用Python修改二进制文件
- 5. 如何更新二进制文件
- 6. 更新二进制文件信息
- 7. Java更新大型二进制文件
- 8. XCode仅将更改的xib文件复制到目标二进制文件
- 9. 更换被拒绝的二进制文件后更改配置文件?
- 10. 复制二进制文件
- 11. 为什么每次重建都会更改二进制文件?
- 12. 上传二进制文件后更改元数据
- 13. iTunes上传新的二进制文件有任何更改。
- 14. 编辑和更改二进制文件中的部分
- 15. 自定义操作二进制文件更改时重建WiX?
- 16. 更改本地主机使用的PHP二进制文件
- 17. 如何将二进制文件更改为RDD或数据框?
- 18. Git在克隆时更改二进制文件
- 19. File.WriteAllBytes不会将文件更改为二进制10101011
- 20. 无法更改上传二进制文件到iTunes连接
- 21. 更改iTunes连接中的二进制文件
- 22. MSBuild:将项目引用更改为文件二进制引用
- 23. 在构建的二进制文件中更改版本信息
- 24. 在二进制模式下的Python 3文件输入更改
- 25. 更改二进制的校验和
- 26. SymtabAPI不会隐含更改二进制
- 27. 更改对二进制的响应
- 28. 更改默认的二进制标记
- 29. 在二进制中更改OBJC_IVAR_ $
- 30. 更新定制活动二进制文件的更好方法
'iofstream'?你确定? –