点击下载 Serialize.zip

这个类是关于加密,解密的操作,文件的一些高级操作
1.序列化
2.要序列化的类
3.序列化例子
看下面代码吧

/// <summary>
/// 类说明:Assistant
/// 编 码 人:苏飞
/// 联系方式:361983679
/// 更新网站:[url=http://www.cckan.net/thread-655-1-1.html]http://www.cckan.net/thread-655-1-1.html[/url]
/// </summary>
using System;
using System.Xml;
using System.IO;
using System.Xml.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization.Formatters.Soap; namespace DotNet.Utilities
{ #region 序列化
public class Serialize
{
/// <summary>
/// 序列化为对象
/// </summary>
/// <param name="objname"></param>
/// <param name="obj"></param>
public static void BinarySerialize(string objname,object obj)
{
try
{
string filename = objname + ".Binary";
if(System.IO.File.Exists(filename))
System.IO.File.Delete(filename);
using (FileStream fileStream = new FileStream(filename, FileMode.Create))
{
// 用二进制格式序列化
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(fileStream, obj);
fileStream.Close();
}
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
} /// <summary>
/// 从二进制文件中反序列化
/// </summary>
/// <param name="objname"></param>
/// <returns></returns>
public static object BinaryDeserialize(string objname)
{
System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter();
//二进制格式反序列化
object obj;
string filename = objname + ".Binary";
if(!System.IO.File.Exists(filename))
throw new Exception("在反序列化之前,请先序列化");
using (Stream stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read))
{
obj = formatter.Deserialize(stream);
stream.Close();
}
//using (FileStream fs = new FileStream(filename, FileMode.Open))
//{
// BinaryFormatter formatter = new BinaryFormatter();
// object obj = formatter.Deserialize(fs);
//}
return obj; } /// <summary>
/// 序列化为soap 即xml
/// </summary>
/// <param name="objname"></param>
/// <returns></returns>
public static void SoapSerialize(string objname,object obj)
{
try
{
string filename=objname+".Soap";
if(System.IO.File.Exists(filename))
System.IO.File.Delete(filename);
using (FileStream fileStream = new FileStream(filename, FileMode.Create))
{
// 序列化为Soap
SoapFormatter formatter = new SoapFormatter();
formatter.Serialize(fileStream, obj);
fileStream.Close();
} }
catch(Exception ex)
{
throw new Exception(ex.Message);
}
} /// <summary>
/// 反序列对象
/// </summary>
/// <param name="objname"></param>
public static object SoapDeserialize(string objname)
{
object obj;
System.Runtime.Serialization.IFormatter formatter = new SoapFormatter();
string filename=objname+".Soap";
if (!System.IO.File.Exists(filename))
throw new Exception("对反序列化之前,请先序列化");
//Soap格式反序列化
using (Stream stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read))
{
obj = formatter.Deserialize(stream);
stream.Close();
}
return obj;
} public static void XmlSerialize(string objname,object obj)
{ try
{
string filename=objname+".xml";
if(System.IO.File.Exists(filename))
System.IO.File.Delete(filename);
using (FileStream fileStream = new FileStream(filename, FileMode.Create))
{
// 序列化为xml
XmlSerializer formatter = new XmlSerializer(typeof(Car));
formatter.Serialize(fileStream, obj);
fileStream.Close();
}
}
catch(Exception ex)
{
throw new Exception(ex.Message);
} } /// <summary>
/// 从xml序列中反序列化
/// </summary>
/// <param name="objname"></param>
/// <returns></returns>
public static object XmlDeserailize(string objname)
{
// System.Runtime.Serialization.IFormatter formatter = new XmlSerializer(typeof(Car));
string filename=objname+".xml";
object obj;
if (!System.IO.File.Exists(filename))
throw new Exception("对反序列化之前,请先序列化");
//Xml格式反序列化
using (Stream stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read))
{
XmlSerializer formatter = new XmlSerializer(typeof(Car));
obj = (Car)formatter.Deserialize(stream);
stream.Close();
}
return obj;
}
}
#endregion #region 要序列化的类
[Serializable]
public class Car
{
private string _Price;
private string _Owner;
private string m_filename; [XmlElement(ElementName = "Price")]
public string Price
{
get { return this._Price; }
set { this._Price = value; }
} [XmlElement(ElementName = "Owner")]
public string Owner
{
get { return this._Owner; }
set { this._Owner = value; }
} public string Filename
{
get
{
return m_filename;
}
set
{
m_filename = value;
}
} public Car(string o, string p)
{
this.Price = p;
this.Owner = o;
} public Car()
{ }
}
#endregion #region 调用示例
public class Demo
{
public void DemoFunction()
{
//序列化
Car car = new Car("chenlin", "120万");
Serialize.BinarySerialize("Binary序列化", car);
Serialize.SoapSerialize("Soap序列化", car);
Serialize.XmlSerialize("XML序列化", car);
//反序列化
Car car2 = (Car)Serialize.BinaryDeserialize("Binary序列化");
car2 = (Car)Serialize.SoapDeserialize("Soap序列化");
car2 = (Car)Serialize.XmlDeserailize("XML序列化");
}
}
#endregion
}

[序列化] Serialize--序列化帮助类 (转载)的更多相关文章

  1. [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类

    [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...

  2. Atitit php序列化 php的serialize序列化和json序列化

    Atitit php序列化 php的serialize序列化和json序列化 PHP 对不同类型的数据用不同的字母进行标示,Yahoo 开发网站提供的Using Serialized PHP with ...

  3. 序列化serialize()与反序列化unserialize()的实例

    在写序列化serialize与反序列化unserialize()时,我们先来看看: serialize - 产生一个可存储的值的表示 描述 string serialize ( mixed $valu ...

  4. Xml序列化、反序列化帮助类

    之前从网络上找了一个Xml处理帮助类,并整理了一下,这个帮助类针对Object类型进行序列化和反序列化,而不需要提前定义Xml的结构,把它放在这儿供以后使用 /// <summary> / ...

  5. 【PHP基础】序列化serialize()与反序列化unserialize()

    序列化serialize()与反序列化unserialize(): 序列化serialize():就是将一个变量所代表的 “内存数据”转换为“字符串”的形式,并持久保存在硬盘(写入文件中保存)上的一种 ...

  6. PHP serialize() 序列化函数

    PHP serialize() 序列化函数 定义和用法 — 语法 string serialize ( mixed $value ) serialize() 返回字符串,此字符串包含了表示 value ...

  7. SerializeUtil 序列化,反序列化工具类

    package cloud.app.prod.home.utils; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutp ...

  8. Python进阶-XII serialize(序列化)、序列化模块

    一.serialize 序列化 1.什么叫序列化——将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. 比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在 ...

  9. 文件读取的时候要留意 -- 序列化serialize()与反序列化unserialize():

    原文:https://blog.csdn.net/little_rabbit_baby/article/details/53840543 序列化serialize()与反序列化unserialize( ...

随机推荐

  1. C++类的大小

    C++类的大小   一个空类class A{};的大小为什么是1,因为如果不是1,当定义这个类的对象数组时候A objects[5]; objects[0]和objects[1]就在同一个地址处,就无 ...

  2. POJ_3662_Telephone_Lines_(二分+最短路)

    描述 http://poj.org/problem?id=3662 给一张图,要将1与n连起来.可以有k条边免费,其他边自费,付费的值为所有自费边中最大的值.求最小付费. Telephone Line ...

  3. BZOJ2288: 【POJ Challenge】生日礼物

    2288: [POJ Challenge]生日礼物 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 284  Solved: 82[Submit][St ...

  4. Ehcache Java开源缓存框架

    一.ehcache.xml 配置详解 单机配置: <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...

  5. FusionCharts参数说明-----3D饼图属性(Pie3D.swf )

    animation 是否显示加载图表时的动画 palette 内置的图表样式,共5个 paletteColors 自定义图表元素颜色(为多个,如过过少会重复) showAboutMenuItem 右键 ...

  6. [转]Unity 3D旋转矢量方向及二维平面基于一点选择另一点(Rotate a Vector3 direction & Rotate a point about another point in 2D )

    http://specialwolf.blog.163.com/blog/static/124466832201301332432766/ ****************************** ...

  7. 【转】BlueDroid介绍

    原文网址:http://www.cnblogs.com/hzl6255/p/3887547.html 自从Android 4.2开始,Android开始使用自己的蓝牙协议栈BlueDroid,而不是b ...

  8. win7+ubuntu 13.04双系统安装方法

    转自:http://jingyan.baidu.com/article/60ccbceb18624464cab197ea.html 当需要频繁使用ubuntu时,vmware虚拟机下运行ubuntu, ...

  9. HDU 5943 Kingdom of Obsession 【二分图匹配 匈牙利算法】 (2016年中国大学生程序设计竞赛(杭州))

    Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  10. ManagerDay-2

    新工作开始了两个星期 基本没有什么产出,主要还是适应新岗位和学东西.作为一个由高级开发转初级PM的人,要学要接触的还有太多. 公司给我安排了一个刚刚起步的项目,可能也是我从业三年接触到的最大的一个项目 ...