【问题标题】:Custom header/metadata file自定义标头/元数据文件
【发布时间】:2015-06-16 19:40:13
【问题描述】:

我需要编写一些写入 X 个字节的代码:

byte[] byteArray = MyFunc.getData();
File.WriteAllBytes(fileName, byteArray);

这完美的工作。接下来我需要在文件的末尾或开头编写一个自定义对象,我执行以下操作:

byte[] myObjectArray;
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
      {
        bf.Serialize(ms, myObject);
        myObjectArray = ms.ToArray();
      }

现在我的问题是:有了这个新的字节数组,我如何从文件中写入和读取它?我写的第一个字节数组的字节数是可变的,第二个字节数组也可以有不同的维度。 你能帮我么?谢谢。

【问题讨论】:

    标签: c# arrays file header byte


    【解决方案1】:

    我不确定你在问什么,但如果你的问题只是关于将新字节数组写入文件末尾,只需打开流到文件并使用 stream.write(byte[], int, int) 方法。如果您将来需要找到该数组,我建议您制作某种标记,告诉您“这是您正在搜索的对象”,例如:

    [xxxxx字节[]xxxxx][####标记####][xx字节[]xx]

    如您所见,标记后的每个字节都是您要搜索的数组。

    【讨论】:

    • 可以,抱歉耽搁了。您可以使用例如特定字符串的字节,但我考虑了一下,这根本不是好主意,最好制作两个文件并将其打包为某种现有格式,例如。拉链。
    【解决方案2】:

    使用MemoryStream.WriteTo,它采用Stream。见here

    根据您要执行的操作(覆盖文件、附加到文件等),您可能需要这样的操作:

    ms.WriteTo(File.Create("./path/to/file");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      • 1970-01-01
      • 2019-12-21
      • 2017-08-16
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多