簡體   English   中英

將字節追加到現有文件C#

[英]Appending bytes to an existing file C#

我正在開發C#中的隱寫軟件,更確切地說是用於視頻文件。 我的方法是在視頻文件的末尾附加額外的信息。 但是,我必須先讀取內存中的整個視頻文件。 我在C#中使用File.ReadAllBytes()函數將視頻文件(大約200MB的視頻)讀取到字節數組中。 然后,我用視頻的字節和數據的字節創建一個新數組。 但是,這有時會導致OutOfMemoryException。 而當它不是很慢時。 有沒有更有效的方法將字節追加到C#中的現有文件中,這將解決此問題? 謝謝。

使用FileMode.Append打開文件

var stream = new FileStream(path, FileMode.Append)

FileMode枚舉

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM