ak1*_*ak1 1 .net c# compression serialization gzipstream
我在反序列化字符串时遇到异常[System.Runtime.Serialization.SerializationException:在流分析结束之前遇到流结束。]请指导我该怎么做才能解决此错误。
byte[] compressed;
string content = "afjsklf lkjflfkldsflkfj fa fj lflkf lk kj lkj fldsjf lkflewru pjdslk jsdfi;j klnvmlvnetu iowu lknxvmln3-958u09v lsn";
var compMS = new MemoryStream();
using (var compressor = new GZipStream(compMS, CompressionMode.Compress))
{
new BinaryFormatter().Serialize(compressor, content);
compressed = compMS.ToArray();
}
var decompMS = new MemoryStream(compressed);
using (var decompressor = new GZipStream(decompMS, CompressionMode.Decompress))
{
BinaryFormatter bf = new BinaryFormatter();
decompMS.Position = 0;
string result = (string)bf.Deserialize(decompMS);
}
Run Code Online (Sandbox Code Playgroud)
我也尝试使用,decompMS.Seek(0, SeekOrigin.Begin);
但异常仍然存在。
小智 5
您的代码中有2个问题。
看看新的小提琴:http : //dotnetfiddle.net/OryftE
或此处的更正代码:
byte[] compressed;
string content = "afjsklf lkjflfkldsflkfj fa fj lflkf lk kj lkj fldsjf lkflewru pjdslk jsdfi;j klnvmlvnetu iowu lknxvmln3-958u09v lsn";
var compMS = new MemoryStream();
using (var compressor = new GZipStream(compMS, CompressionMode.Compress))
{
new BinaryFormatter().Serialize(compressor, content);
}
compressed = compMS.ToArray();
var decompMS = new MemoryStream(compressed);
using (var decompressor = new GZipStream(decompMS, CompressionMode.Decompress))
{
BinaryFormatter bf = new BinaryFormatter();
decompMS.Position = 0;
string result = (string)bf.Deserialize(decompressor);
}
Run Code Online (Sandbox Code Playgroud)
希望能有所帮助。
最好的问候,克里斯