C# FileStream 转为实体类
时间: 2024-09-28 20:01:38 浏览: 38
在C#中,`FileStream`是一个用于读写文件流的对象,而将二进制数据转换为实体类通常是通过序列化来进行的。假设你有一个名为`MyEntity`的自定义实体类,可以这样操作:
```csharp
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public class MyEntity
{
// 定义你的实体类属性...
}
public byte[] FileStreamToEntity(FileStream fileStream, MyEntity entity)
{
BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream memoryStream = new MemoryStream())
{
formatter.Serialize(memoryStream, entity);
byte[] serializedData = memoryStream.ToArray(); // 序列化的数据
// 将原始FileStream的数据读入
int bytesRead = fileStream.Read(serializedData, 0, serializedData.Length);
if (bytesRead == serializedData.Length)
{
return serializedData;
}
else
{
throw new Exception("Failed to read entire file into memory stream.");
}
}
}
// 使用示例
MyEntity myEntity = new MyEntity { /* 初始化属性 */ };
FileStream fileStream = File.OpenRead("path_to_your_file");
byte[] entityBytes = FileStreamToEntity(fileStream, myEntity);
fileStream.Close();
```
这个方法先将`entity`对象序列化成字节数组,然后尝试从`FileStream`读取相同的字节数到内存流中,如果读取成功,则返回字节数组。
阅读全文