C#将类对象写入二进制文件

C# write class object to binary file in one step

本文关键字:二进制文件 对象      更新时间:2023-10-16

好,在C 中,我可以创建一个结构对象,其中包含一堆值类型,并且在需要时,将其写入单个写入语句中的二进制文件:

struct DataFileHeader {
  unsigned short Id;
  unsigned short Type;
  unsigned int Count;
  unsigned int Offset;
};
...
struct DataFileHeader dataFileHeader;
...
rc = _write(fileHandle, &dataFileHeader, 12);

有什么办法在C#中做到这一点?我已经将结构转换为C#中的类,并正在与二进制形式合作,并试图序列化对象,但在流中添加了一堆文本和其他内容。我只想写出对象中的所有值字段。这是可能的还是我必须分开对象上的每个字段?

void Main()
{
    var fileHeader = new DataFileHeader()
    {
        Count = 10,
        Id = 10,
        Offset = 10,
        Type = 10
    };
    Serialize(fileHeader).Dump();
}
// Define other methods and classes here
public byte[] Serialize<TObject>(TObject obj)
{
    BinaryFormatter binaryFormatter = new BinaryFormatter();
    byte[] ret = null;
    using (MemoryStream ms = new MemoryStream())
    {
        binaryFormatter.Serialize(ms, obj);
        ret = ms.ToArray();
    }
    return ret;
}
[Serializable]
public struct DataFileHeader
{
    public short Id;
    public short Type;
    public int Count;
    public int Offset;
};

如果那不起作用,我认为单独这样做可能是唯一的方法。

BitConverter.GetBytes(fileHeader.Count).Concat(BitConverter.GetBytes(fileHeader.Count)).Concat(BitConverter.GetBytes(fileHeader.Count)).Concat(BitConverter.GetBytes(fileHeader.Count)).Dump();