private byte[] SerializeOnlineList()
{
StringCollection onlineList = new StringCollection();
foreach (object o in _hb_OnlineList.Keys)
{
onlineList.Add(o.ToString());//转换语句
}
IFormatter format = new BinaryFormatter();//以二进制格式将对象或整个连接对 //象图形序列化和反序列化。
MemoryStream stream = new MemoryStream();
format.Serialize(stream, onlineList);//保持到内存流
byte[] ret = stream.ToArray();
stream.Close();
return ret;
}
返回的ret怎么为空??注:_hb_OnlineList.Keys是有值的(Key:"123456",此处用不到Value)。
我的平台是08 .net3.5应该跟这个没关系吧?再问下,如何反序列化后将值放入ListBox?
MemoryStream stream = new MemoryStream(ret);
StringCollection onlineList= format.Deserialize(stream) as StringCollection;
stream.Close();
listBox1.DataSource = onlineList;
ret = {byte[299]}
[0] 0 byte
[1] 1 byte
[2] 0 byte
[3] 0 byte
[4] 0 byte
[5] 255 byte
....................
[296] 13 byte
[297] 3 byte
[298] 11 byte
怎么回事?
byte[] btyes =图片;
if (btyes != null &&
btyes.Length > 0)
{
MemoryStream ms = new MemoryStream(btyes);
Image img = Image.FromStream(ms);
b.BookImage = img;
}
else
b.BookImage = null
图片
byte[] btyes =图片;
if (btyes != null &&
btyes.Length > 0)
{
MemoryStream ms = new MemoryStream(btyes);
Image img = Image.FromStream(ms);
b.BookImage = img;
}
else
图片 = null
你确认在return ret;这句断点调试时为null吗?
{
FileStream fs=new FileStream("imagetemp",FileMode.Create,FileAccess.Write,FileShare.None);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs,(object)image);
fs.Close();
fs=new FileStream("imagetemp",FileMode.Open,FileAccess.Read,FileShare.None);
byte[] bytes = new byte[fs.Length];
fs.Read(bytes,0,(int)fs.Length);
fs.Close();
return bytes;
}
public Image ReadImage(byte[] bytes)
{
FileStream fs=new FileStream("imagetemp1",FileMode.Create,FileAccess.Write,FileShare.None);
foreach(byte a in bytes)
{
fs.WriteByte(a);
}
fs.Close();
fs=new FileStream("imagetemp1",FileMode.Open,FileAccess.Read,FileShare.None);
BinaryFormatter bf = new BinaryFormatter();
object obj=bf.Deserialize(fs);
fs.Close();
return (Image)obj;
}