SerializerDataset(DataSet ds,Stream toStream)
{
BinaryFormatter formatter = new BinaryFormatter();
//MemoryStream ms = new MemoryStream();
formatter.Serialize(toStream,data);
}
deserializeStream(Stream stream)
{
DataSet ds1 = new DataSet("newds");
BinaryFormatter formatter = new BinaryFormatter();
ds1 = (DataSet) formatter.Deserialize(stream);//error
}
这是我对DataSet序列化和反序列化的代码,在反序列化时提示在分析完成之前就遇到
流结尾,不知为何。多谢帮助,在线等待!!
{
BinaryFormatter formatter = new BinaryFormatter();
//MemoryStream ms = new MemoryStream();
formatter.Serialize(toStream,data);
}
deserializeStream(Stream stream)
{
DataSet ds1 = new DataSet("newds");
BinaryFormatter formatter = new BinaryFormatter();
ds1 = (DataSet) formatter.Deserialize(stream);//error
}
这是我对DataSet序列化和反序列化的代码,在反序列化时提示在分析完成之前就遇到
流结尾,不知为何。多谢帮助,在线等待!!
解决方案 »
- C# Linq查询的一个问题
- 急求MKV视频文件播放的方法。
- C#子类调用父类构造方法的问题
- dataGridView中,选择行在经过重新排序后,如何让选择行还是原来的选择行?
- 使用serialport类,如何判断上位机已经停止向计算机发送数据?
- ***************100求C#版的CRC效验****************8
- winform中DataGrid如何添加CheckBox及读取选中的列的值
- C#开发HYPERV
- 文本文件读取的问题
- 请问大侠们,有办法把sql的image字段导出到一个文本文件里面吗?
- 报表问题
- 先安装的.net环境,后配置的IIS出现的问题。visual Studio.net以检测到指定的WEB运行的不是ASP.net 1.1版。
using System.IO;
using System.Collections;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;public class App
{
[STAThread]
static void Main()
{
Serialize();
Deserialize();
} static void Serialize()
{
// Create a hashtable of values that will eventually be serialized.
Hashtable addresses = new Hashtable();
addresses.Add("Jeff", "123 Main Street, Redmond, WA 98052");
addresses.Add("Fred", "987 Pine Road, Phila., PA 19116");
addresses.Add("Mary", "PO Box 112233, Palo Alto, CA 94301"); // To serialize the hashtable and its key/value pairs,
// you must first open a stream for writing.
// In this case, use a file stream.
FileStream fs = new FileStream("DataFile.dat", FileMode.Create); // Construct a BinaryFormatter and use it to serialize the data to the stream.
BinaryFormatter formatter = new BinaryFormatter();
try
{
formatter.Serialize(fs, addresses);
}
catch (SerializationException e)
{
Console.WriteLine("Failed to serialize. Reason: " + e.Message);
throw;
}
finally
{
fs.Close();
}
}
static void Deserialize()
{
// Declare the hashtable reference.
Hashtable addresses = null; // Open the file containing the data that you want to deserialize.
FileStream fs = new FileStream("DataFile.dat", FileMode.Open);
try
{
BinaryFormatter formatter = new BinaryFormatter(); // Deserialize the hashtable from the file and
// assign the reference to the local variable.
addresses = (Hashtable) formatter.Deserialize(fs);
}
catch (SerializationException e)
{
Console.WriteLine("Failed to deserialize. Reason: " + e.Message);
throw;
}
finally
{
fs.Close();
} // To prove that the table deserialized correctly,
// display the key/value pairs.
foreach (DictionaryEntry de in addresses)
{
Console.WriteLine("{0} lives at {1}.", de.Key, de.Value);
}
}
}
[Serializable]
public class GradResume
{
/// <summary>
/// 用户ID。
/// </summary>
public string UserID;
/// <summary>
/// 登录名。
/// </summary>
public string UserName;
....................... 序列化和反序列化的代码如下:
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters;
using System.Runtime.Serialization.Formatters.Binary;
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//新建类GradResume的实例
GradResume aaa = new GradResume();
aaa.UserID = "123";
aaa.UserName = "eddiezhong";
//序列化对象
BinaryFormatter binaryFormatter = new BinaryFormatter();
System.IO.MemoryStream mStm1 = new System.IO.MemoryStream();
binaryFormatter.Serialize(mStm1,aaa); byte[] tmpBytes = mStm1.ToArray();
mStm1.Close();
//tmpBytes就可以用来保存数据库了或者写文件
//读数据库或者文件文件重新获得tmpBytes //反序列化二进制数组
System.IO.MemoryStream mStm2 = new System.IO.MemoryStream(tmpBytes);
mStm2.Position = 0;
object newObj = binaryFormatter.Deserialize(mStm2);
mStm2.Close(); //得到GradResume对象
GradResume bbb = (GradResume)newObj;
this.TextBox1.Text = bbb.UserID;
this.TextBox2.Text = bbb.UserName;
该DatasSet要在服务器和客户端间传送的。
再这个过程中要求不能用文件的。