C#读取二进制字节流

1、以下方法将一个对象序列化为可以在数据库中存储的字节数组
private byte[] getByteData(SupplementData data)
  {
   BinaryFormatter serializer =new BinaryFormatter();
   MemoryStream memStream =new MemoryStream();
   serializer.Serialize(memStream,data);
   int length = (int)memStream.Length;
   byte[] buffer = new byte[length];
   memStream.Position = 0;
   memStream.Read(buffer,0,length);
   return buffer;
  }
调用方法得到字节数组后给参数赋值:
oCommand.Parameters[5].Value =getByteData(OldData);
2、以上是关于序列化后的字节数组的存储,那读取呢?

  private SupplementData GetHistoryData(string Track_UUID)
  {
   //根据ID得到一笔记录,GetTable是本人系统中的特定方法
   DataTable table = GetTable("LIC_DATA_TRACK","TRACK_UUID",Track_UUID,out sErrorMsg);

   BinaryFormatter deserializer =new BinaryFormatter();
   MemoryStream stream =new MemoryStream();
   //将得到的记录中的某个Bolb类型的数据读出来存储到数据流中
   byte[] objBytes =(byte[])table.Rows[0]["HistoryData"];
 
  stream.Write(objBytes,0,objBytes.Length);
   stream.Position = 0;
   //字节流反序列化后,返回对象SupplementData(本人定义的一个对象)
   return (SupplementData)deserializer.Deserialize(stream);
  }

 
### C#读取二进制文件的方法 在 C# 编程语言中,可以利用 `System.IO` 命名空间下的多个类来实现对二进制文件的操作。其中最常用的是 `FileStream` 配合 `BinaryReader` 来完成二进制文件的读取工作[^1]。 以下是具体的实现方式: #### 使用 BinaryReader 读取二进制文件 `BinaryReader` 是 .NET 提供的一个用于高效读取原始字节流并将其转换为高级数据类型的工具。它支持多种基本数据类型(如整数、浮点数、字符串等)的读取操作[^2]。 下面是一段完整的示例代码展示如何使用 `BinaryReader` 从名为 `"example.bin"` 的二进制文件中读取不同类型的数据: ```csharp using System; using System.IO; class Program { static void Main() { try { // 打开现有的二进制文件 example.bin 并创建 BinaryReader 实例 using (FileStream fileStream = new FileStream("example.bin", FileMode.Open)) using (BinaryReader reader = new BinaryReader(fileStream)) { // 依次读取不同类型的值 int intValue = reader.ReadInt32(); double doubleValue = reader.ReadDouble(); string stringValue = reader.ReadString(); Console.WriteLine($"Integer Value: {intValue}"); Console.WriteLine($"Double Value: {doubleValue}"); Console.WriteLine($"String Value: {stringValue}"); // 如果还有更多数据可继续读取... } } catch (FileNotFoundException) { Console.WriteLine("Error: The specified binary file was not found."); } catch (IOException ex) { Console.WriteLine($"I/O Error occurred: {ex.Message}"); } } } ``` 这段代码展示了如何打开一个已存在的二进制文件,并从中提取存储的不同类型的数据项。注意这里包含了异常处理机制以应对可能发生的错误情况,比如找不到指定文件或者 I/O 错误等问题[^1]。 另外,在实际开发过程中还需要特别关注资源管理和性能优化等方面的内容[^3]。 --- ### 注意事项 当进行二进制文件读写时需留意以下几个方面: - **确保文件存在**:如果尝试访问不存在的文件,则会抛出 `FileNotFoundException` 异常。 - **正确匹配数据结构**:写入与读取顺序应保持一致;否则可能导致数据错乱或程序崩溃。 - **关闭流对象**:始终记得释放不再使用的文件句柄或其他系统资源,通常建议采用 `using` 关键字自动管理生命周期。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值