0
我試圖用protobuf-net
和 GzipStream
Gzipstream通過TCP不解壓
的反序列化送過來一個TCP連接序列化,壓縮數據或從zipstream讀取僅數個街區,並沒有完成。
爲了測試它,我選擇嘗試使用一個更簡單的FileStream
來查看數據實際上是否被壓縮和寫入。 但是行Console.writeLine(inPerson1.name)
拋出一個Object reference not set exception
,因爲它似乎沒有從zipstream讀取任何數據。
任何想法,爲什麼,或者我做錯了什麼?
代碼:
public void TestZipToFile(){
var person1 = new Person { id = 1, name = "Pete" };
var person2 = new Person { id = 2, name = "Sarah" };
using (var file = File.Create("people.bin"))
{
GZipStream zs = new GZipStream(file, CompressionMode.Compress);
Serializer.SerializeWithLengthPrefix<Person>(zs, person1, PrefixStyle.Fixed32);//.Serialize(file, foo);
Serializer.SerializeWithLengthPrefix<Person>(zs, person2, PrefixStyle.Fixed32);//.Serialize(file, foo);
}
Person inPerson1 = null;
Person inPerson2 = null;
using (var file = File.OpenRead("people.bin"))
{
GZipStream ozs = new GZipStream(file, CompressionMode.Decompress);
inPerson1 = Serializer.DeserializeWithLengthPrefix<Person>(ozs,PrefixStyle.Fixed32);//.Deserialize<Foo>(file);
inPerson2 = Serializer.DeserializeWithLengthPrefix<Person>(ozs, PrefixStyle.Fixed32);//.Deserialize<Foo>(file);
}
Console.WriteLine(inPerson1.name);
Console.WriteLine(inPerson2.name);
}
[ProtoContract]
public class Person
{
[ProtoMember(1)
public int id;
[ProtoMember(2)]
public string name;
}
是的!我非常感激。謝謝。 – Vort3x