【问题标题】:Appending bytes to an existing file C#将字节附加到现有文件 C#
【发布时间】:2015-03-10 08:46:24
【问题描述】:

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

【问题讨论】:

标签: c# video steganography


【解决方案1】:

FileMode.Append打开文件

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

FileMode Enumeration

FileMode.Append:

如果文件存在则打开文件并查找文件末尾,或者 创建一个新文件。这需要 FileIOPermissionAccess.Append 允许。 FileMode.Append 只能与 文件访问。写入。试图在结束前寻求一个位置 文件抛出 IOException 异常,任何读取尝试都失败 并抛出 NotSupportedException 异常。

【讨论】:

    【解决方案2】:

    当然,这很简单:

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

    无需先读取文件。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 这更像是一条评论!
      • 无法评论 + 它提供了答案。
      • 如果您无法发表评论,这并不意味着您应该继续发布适合comment 的答案。另外,避免仅链接答案。确认来源,但在此处复制相关答案/代码。这也是一个重复问题的情况,其中一个标志会更合适。
      猜你喜欢
      • 2011-10-15
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      • 2021-02-11
      • 1970-01-01
      • 2015-12-14
      • 2021-11-25
      • 1970-01-01
      相关资源
      最近更新 更多