gpt4 book ai didi

c# - 反序列化压缩字符串时出错(解析完成前遇到流结束)C#

转载 作者:太空宇宙 更新时间:2023-11-03 20:06:32 25 4
gpt4 key购买 nike

我遇到异常[System.Runtime.Serialization.SerializationException: End of Stream encountered before parsing was completed.] 在反序列化字符串时,请指导我如何解决此问题错误。

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);

}

我也尝试使用 decompMS.Seek(0, SeekOrigin.Begin); 但异常仍然存在。

http://dotnetfiddle.net/PF7egd

最佳答案

您的代码中有 2 个问题。

  • 在关闭压缩器之前执行 compMS.ToArray()(在第一个 using block 之后)
  • 解压时,你尝试反序列化原始数据而不是解压后的数据

看看新的 fiddle :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);

}

希望对您有所帮助。

最好的问候,克里斯

关于c# - 反序列化压缩字符串时出错(解析完成前遇到流结束)C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23084812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com