将字节附加到现有文件C#

时间:2015-01-12 14:39:04

标签: c# video steganography

我正在研究C#中的隐写术软件,更准确地说是用于视频文件。我的方法是在视频文件的末尾附加额外的信息。但是,我必须首先在内存中读取整个视频文件。我使用C#中的File.ReadAllBytes()函数将视频文件(视频大约200MB)读入字节数组。然后我用视频的字节和我的数据的字节创建一个新的数组。但是,这有时会导致OutOfMemoryException。而且当它不是很慢时。是否有更有效的方法将字节附加到C#中的现有文件,这将解决此问题?谢谢。

3 个答案:

答案 0 :(得分:4)

使用FileMode.Append

打开文件
var stream = new FileStream(path, FileMode.Append)

FileMode Enumeration

FileMode.Append:

  

打开文件(如果存在)并搜索到文件的末尾,或者   创建一个新文件。这需要FileIOPermissionAccess.Append   允许。 FileMode.Append只能与。一起使用   FileAccess.Write。试图在结束之前寻找一个位置   file抛出IOException异常,任何读取尝试都失败   并抛出NotSupportedException异常。

答案 1 :(得分:2)

当然,这很简单:

using (var stream = File.Open(path, FileMode.Append))
{
    stream.Write(extraData);
}

无需先读取文件。

我不会将其归类为隐写术 - 这将涉及对视频帧进行微妙的更改,使其仍然是有效的视频并且看起来与人眼相同,但额外的数据是在这些帧中编码,以便以后可以提取。

答案 2 :(得分:0)

尝试这种方法,我不确定它是否会产生更快的结果,但逻辑上它应该。 :https://stackoverflow.com/a/6862460/2835725