学到的一种把数据集序列化为本地文件的方法

对于需要频繁访问的数据,可以在用户第一次访问该数据的时候将其序列化为本地文件,这样,用户再次访问该数据的时候就无需再次访问数据库,而是直接将本地文件反序列化为数据集,这样能大大的优化系统的性能。

实现序列化和反序列化的类:

 1  using  System;
 2  using  System.Data;
 3  using  System.Configuration;
 4  using  System.Web;
 5  using  System.Web.Security;
 6  using  System.Web.UI;
 7  using  System.Web.UI.WebControls;
 8  using  System.Web.UI.WebControls.WebParts;
 9  using  System.Web.UI.HtmlControls;
10  using  System.Runtime.Serialization;
11  using  System.IO;
12  using  System.Runtime.Serialization.Formatters.Binary;
13 
14  ///   <summary>
15  ///  Summary description for FileIO
16  ///   </summary>
17       public   class  FileIO < T >
18      {
19           public   void  Serialize(T items,  string  sFile)
20          {
21              IFormatter formatter  =   new  BinaryFormatter();
22 
23              Stream stream  =   new  FileStream(HttpContext.Current.Server.MapPath(sFile), FileMode.Create,
24              FileAccess.Write, FileShare.None);
25              formatter.Serialize(stream, items);
26              stream.Close();
27          }
28 
29           public  T Deserialize( string  sFile)
30          {
31              IFormatter formatter  =   new  BinaryFormatter();
32              Stream stream  =   new  FileStream(HttpContext.Current.Server.MapPath(sFile), FileMode.Open,
33              FileAccess.Read, FileShare.Read);
34              T items  =  (T)formatter.Deserialize(stream);
35              stream.Close();
36               return  items;
37          }
38      }
39 

将数据集序列化为本地文件时,需在本地新建一个BIN文件,即新建一个文本文件,然后把文本文件的后缀名"txt"改为"bin"

     DataSet dsList  =   new  DataSet()
     
// 填充数据集
        FileIO < DataSet >  file  =   new  FileIO < DataSet > ();
        file.Serialize(dsList, 
" cache/cache.bin " );  // 序列化缓存
        Cache[ " mDS " =  dsList; 

读取本地文件

     FileIO < DataSet >  file  =   new  FileIO < DataSet > ();
            ds 
=  file.Deserialize( " cache/cache.bin " );

参考:http://www.cnblogs.com/eicesoft/archive/2007/09/11/889654.html

 

转载于:https://www.cnblogs.com/leodrain/archive/2007/09/13/891765.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值