我在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'?你確定? –