MemoryStream ms = new MemoryStream(); f.Serialize(ms, myClass); byte [] buf = new byte[1024]; ms.Position = 0L; int cnt = ms.Read(buf, 0, 1024);
List<Calling> callingList = new List<Calling>(); callingList.Add(new Calling { Id = "001", Room = "302", Site = "01" }); callingList.Add(new Calling { Id = "002", Room = "302", Site = "02" }); Calling[] callingarray = callingList.ToArray(); System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(callingarray.GetType()); System.IO.MemoryStream stream = new System.IO.MemoryStream(); serializer.Serialize(stream, callingarray); byte[] bytes=stream.GetBuffer();参考下。
我把程序改成这样了 MemoryStream ms = new MemoryStream(); f.Serialize(ms, myClass); ms.Position = 0L; byte [] buf = new byte[1024]; int cnt = ms.Read(buf, 0, 1024); MemoryStream ms1 = new MemoryStream(); ms1.Write(buf, 0, cnt); myClass2 = (MyClass)f.Deserialize(ms1);可是出现了新的异常“End of Stream encountered before parsing was completed”这样怎么解决?
Users users = new Users(1, "csdn"); IFormatter f = new BinaryFormatter(); MemoryStream ms = new MemoryStream(); f.Serialize(ms, users); ms.Position = 0; byte[] b = new byte[ms.Length]; ms.Read(b, 0, b.Length); MemoryStream msTwo = new MemoryStream(b); ms.Position = 0; Users usersTwo = f.Deserialize(msTwo) as Users; if (usersTwo != null) Response.Write(usersTwo.ID + "==" + usersTwo.Name); [Serializable] public class Users { public Users(int id, string name) { this.ID = id; this.Name = name; } public int ID; public string Name; }
MemoryStream ms = new MemoryStream();
f.Serialize(ms, myClass);
byte [] buf = new byte[1024];
ms.Position = 0L;
int cnt = ms.Read(buf, 0, 1024);
callingList.Add(new Calling { Id = "001", Room = "302", Site = "01" });
callingList.Add(new Calling { Id = "002", Room = "302", Site = "02" });
Calling[] callingarray = callingList.ToArray();
System.Xml.Serialization.XmlSerializer serializer
= new System.Xml.Serialization.XmlSerializer(callingarray.GetType()); System.IO.MemoryStream stream = new System.IO.MemoryStream();
serializer.Serialize(stream, callingarray);
byte[] bytes=stream.GetBuffer();参考下。
我把程序改成这样了 MemoryStream ms = new MemoryStream();
f.Serialize(ms, myClass);
ms.Position = 0L;
byte [] buf = new byte[1024];
int cnt = ms.Read(buf, 0, 1024);
MemoryStream ms1 = new MemoryStream();
ms1.Write(buf, 0, cnt);
myClass2 = (MyClass)f.Deserialize(ms1);可是出现了新的异常“End of Stream encountered before parsing was completed”这样怎么解决?
Users users = new Users(1, "csdn");
IFormatter f = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
f.Serialize(ms, users);
ms.Position = 0;
byte[] b = new byte[ms.Length];
ms.Read(b, 0, b.Length); MemoryStream msTwo = new MemoryStream(b);
ms.Position = 0;
Users usersTwo = f.Deserialize(msTwo) as Users;
if (usersTwo != null)
Response.Write(usersTwo.ID + "==" + usersTwo.Name);
[Serializable]
public class Users
{
public Users(int id, string name)
{
this.ID = id;
this.Name = name;
}
public int ID;
public string Name;
}
从0处开始写入byte
把你写的MyClass贴出来看看,可能序列化之后的总长度超过了1024字节
所以
ms.Read(buf, 0, 1024)
没能把全部数据都读出来。
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(myClass.GetType());
MemoryStream ms = new MemoryStream();serializer.Serialize(ms, myClass);
byte[] buf = ms.GetBuffer();
MemoryStream ms1 = new MemoryStream(buf);
Mouse myClass2 = (Mouse)serializer.Deserialize(ms1);