点击下载 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++ Prime:范围for语句

    C++11新标准引入了一种更简单的for语句,这种语句可以遍历容器或者其他序列的所有元素.范围for语句的语法形式是: for( declaration : expression) statement ...

  2. oracle稳定执行计划1

    稳定执行计划 1 策略: Oracle的sql 执行计划在一些场景下会发生变化,导致系统会发生不可知的情况,影响系统的稳定性,特别是关键业务的sql. 比如下面的场景: 统计信息过老,重新收集了统计信 ...

  3. qt容器在并发时需要注意的地方

    最近用tbb和qt写了一个延时摄影后期控制镜头的工具,主要就是扫描目录下所有图片,按照给定参数截取图片中某区域并另存,模拟镜头摆动. 扫描后的图片路径保存在qlist内,作为只读数据,交由tbb的pa ...

  4. 用C++试着完成Python简明教程后面的练习

    试图存取文件的部分无法完成.代码已提交到github.

  5. HDOJ -- 1015

    1.DFS #include<cmath> #include<cstdio> #include<cstdlib> #include<string> #i ...

  6. HDU-2523 SORT AGAIN

    http://acm.hdu.edu.cn/showproblem.php?pid=2523 学习哈希和注意i++,后要--i: SORT AGAIN Time Limit: 2000/1000 MS ...

  7. MVC Model 数据注解与验证

    常用验证特性: using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Sch ...

  8. Semi-definite programming优化工具

    半正定优化工具(SDPLR) SDPLR 是一个求解大规模半正定规划问题的C语言包.具体使用方法参见: http://dollar.biz.uiowa.edu/~sburer/pmwiki/pmwik ...

  9. pac 文件使用到的javascript函数

    下面是可用于FindProxyForURL()函数体中的条件函数: 基于主机名的函数: isPlainHostName() dnsDomainIs() localHostOrDomainIs() is ...

  10. xls 和 xml 数据 排序 绑定 -原创

    xls 和 xml 排序 xml: <?xml version="1.0" encoding="UTF-8"?> <?xml-styleshe ...