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

将字节追加到现有文件C#,c#,video,steganography,C#,Video,Steganography,我正在用C#编写一个隐写术软件,更准确地说是视频文件。我的方法是在视频文件的末尾附加额外的信息。但是,我必须先读取内存中的整个视频文件。我使用C#中的File.ReadAllBytes()函数将视频文件(大约200MB的视频)读取到字节数组中。然后我用视频字节和数据字节创建一个新数组。但是,这有时会导致OutOfMemoryException。如果没有,速度会很慢。有没有更有效的方法将字节附加到C#中的现有文件中,从而解决此问题?谢谢。当然,很简单: using (var stream = Fi

我正在用C#编写一个隐写术软件,更准确地说是视频文件。我的方法是在视频文件的末尾附加额外的信息。但是,我必须先读取内存中的整个视频文件。我使用C#中的File.ReadAllBytes()函数将视频文件(大约200MB的视频)读取到字节数组中。然后我用视频字节和数据字节创建一个新数组。但是,这有时会导致OutOfMemoryException。如果没有,速度会很慢。有没有更有效的方法将字节附加到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异常


尝试这种方法,我不确定它是否会产生更快的结果,但从逻辑上讲它应该。

将200MB文件加载到内存是错误的方法(忽略一次性场景)。您应该改用流。检查这个..可能重复的更多的是评论!无法发表评论+它提供了答案。如果你无法发表评论,并不意味着你应该发表适合你的答案。此外,避免只链接答案。确认来源,但在此处复制相关答案/代码。这也是一个重复问题的情况,在这种情况下,旗帜会更合适。