Jou*_*usi 13 c# binary managed deserialization
如果我想从二进制文件填充结构,我会使用这样的东西:
using (BinaryReader br = new BinaryReader(File.Open(filename, FileMode.Open)))
{
myStruct.ID = br.ReadSingle();
myStruct.name = br.ReadBytes(20);
}
Run Code Online (Sandbox Code Playgroud)
但是,我必须在反序列化之前将整个文件读入一个字节数组,因为我想做一些预处理.是否有任何托管方式从字节数组填充我的结构,最好类似于上面的那个?
Gle*_*rie 17
这是采取一些数据(实际上是一个System.Data.DataSet中)和序列化到一个字节数组,同时使用DeflateStream压缩的样品.
try
{
var formatter = new BinaryFormatter();
byte[] content;
using (var ms = new MemoryStream())
{
using (var ds = new DeflateStream(ms, CompressionMode.Compress, true))
{
formatter.Serialize(ds, set);
}
ms.Position = 0;
content = ms.GetBuffer();
contentAsString = BytesToString(content);
}
}
catch (Exception ex) { /* handle exception omitted */ }
Run Code Online (Sandbox Code Playgroud)
以下是反序列化的代码:
var set = new DataSet();
try
{
var content = StringToBytes(s);
var formatter = new BinaryFormatter();
using (var ms = new MemoryStream(content))
{
using (var ds = new DeflateStream(ms, CompressionMode.Decompress, true))
{
set = (DataSet)formatter.Deserialize(ds);
}
}
}
catch (Exception ex)
{
// removed error handling logic!
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.正如Nate暗示的那样,我们在这里使用MemoryStream.
| 归档时间: |
|
| 查看次数: |
31711 次 |
| 最近记录: |