[英]Appending bytes to an existing file C#
我正在開發C#中的隱寫軟件,更確切地說是用於視頻文件。 我的方法是在視頻文件的末尾附加額外的信息。 但是,我必須先讀取內存中的整個視頻文件。 我在C#中使用File.ReadAllBytes()函數將視頻文件(大約200MB的視頻)讀取到字節數組中。 然后,我用視頻的字節和數據的字節創建一個新數組。 但是,這有時會導致OutOfMemoryException。 而當它不是很慢時。 有沒有更有效的方法將字節追加到C#中的現有文件中,這將解決此問題? 謝謝。
使用FileMode.Append
打開文件
var stream = new FileStream(path, FileMode.Append)
FileMode.Append:
打開文件(如果存在)並查找到文件末尾,或創建一個新文件。 這需要FileIOPermissionAccess.Append權限。 FileMode.Append只能與FileAccess.Write結合使用。 嘗試在文件末尾之前尋找位置會引發IOException異常,並且任何讀取嘗試均會失敗並引發NotSupportedException異常。
當然,這很容易:
using (var stream = File.Open(path, FileMode.Append))
{
stream.Write(extraData);
}
無需先讀取文件。
我不會將其歸類為隱寫術-涉及對視頻幀進行微妙的更改,使其仍然是有效的視頻,並且對人眼看起來相同,但是多余的數據會在這些幀中進行編碼,以便可以提取后來。
嘗試此方法,我不確定它是否會產生更快的結果,但是從邏輯上講應該如此。 : https : //stackoverflow.com/a/6862460/2835725
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.