我正在研究C#中的隱寫軟件,更精確地說是用於視頻文件。我的方法是在視頻文件的末尾添加額外的信息。但是,我必須先在內存中讀取整個視頻文件。我使用C#中的File.ReadAllBytes()函數將視頻文件(視頻大約200MB)讀取到一個字節數組中。然後我用視頻的字節和數據的字節創建一個新陣列。但是,這有時會導致OutOfMemoryException。而當它不是很慢時。有沒有一種更有效的方法來將字節追加到C#中的現有文件中,這將解決此問題?謝謝。將字節附加到現有文件C#
回答
當然,這很簡單:
using (var stream = File.Open(path, FileMode.Append))
{
stream.Write(extraData);
}
無需先閱讀該文件。
雖然我不會將其作爲隱寫術加以分類 - 這將涉及對視頻幀進行細微更改,使其仍然是一個有效的視頻,並且對人眼看起來相同,但額外的數據在這些幀內編碼它可以稍後提取。
公開賽FileMode.Append
var stream = new FileStream(path, FileMode.Append)
文件
FileMode.Append:
打開該文件,如果它存在,並尋求到該文件的末尾,或 創建新文件。這需要FileIOPermissionAccess.Append 權限。 FileMode.Append只能與 FileAccess.Write一起使用。嘗試在 文件結束之前嘗試尋找位置時會拋出IOException異常,並且任何嘗試讀取的操作都會失敗 並引發NotSupportedException異常。
嘗試這種方法,我不確定它是否會產生更快的結果,但在邏輯上它應該。 :https://stackoverflow.com/a/6862460/2835725
這是更多評論! – mybirthname
無法評論+它提供了答案。 – user2835725
如果你無法發表評論,這並不意味着你應該繼續發表適合[評論](http://stackoverflow.com/help/privileges/comment)的答案。另外,請避免僅鏈接答案。確認來源,但在此複製相關答案/代碼。這也是一個重複問題,其中一個標誌會更合適。 – Reti43
- 1. C#將節點附加到現有的xml文件
- 2. c + +附加到現有文件
- 3. 使用OutputStreamWriter將字符串附加到現有文件
- 4. 將python對象(字典)附加到現有的pickle文件
- 5. 如何將文件附加到現有文件中的mongodb
- 6. Xstream附加到現有的XML文件
- 7. 將文本附加到包含文本的現有字段
- 8. C++將字符串添加到現有文本文件
- 9. 將char附加到現有字符串中Objective-C
- 10. 將位附加到C中的文件
- 11. 如何將附加列添加到現有的CSV文件?
- 12. 將字節附加到.dat文件的java代碼
- 13. 將字節[]附加到二進制文件的末尾
- 14. 如何使用Perl將XML數據節點附加到現有文件?
- 15. Python腳本附加到現有文件,但在8192字節後停止
- 16. 將附件添加到現有的eml文件
- 17. 附加到現有
- 18. 將文件附加到PHPMailer
- 19. 將文件附加到PDF
- 20. 將信息附加到現有Excel文件時發生java.lang.NullPointerException
- 21. 將源文件重新附加到現有SVN
- 22. 將數據附加到現有的xml文件
- 23. 如何將RSS數據附加到現有的RSS XML文件?
- 24. 使用numpy將矩陣附加到現有文件
- 25. 將SVN附加到現有的回購文件結構中
- 26. 如何將新列表附加到現有的CSV文件?
- 27. C附加到現有的jvm
- 28. 如何將文本附加到C#中所有現有的.txt文檔?
- 29. 將字符串附加到輸入文件名中c
- 30. 將字符串附加到C++中的文件中
提供您的代碼 – giammin
將200MB文件加載到內存中是錯誤的方法(忽略一次性方案)。您應該使用流代替。 – xxbbcc
http://stackoverflow.com/questions/5958495/append-data-to-byte-array?rq=1檢查此.. – mybirthname