漫漫技术人生路

C#

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

http://community.csdn.net/Expert/topic/5744/5744526.xml?temp=.3957178
双缓存(使用文件与内存)

#region 使用指定的 XmlWriter 序列化指定的 Object 并将 XML 文档写入文件

/// <summary>
/// 使用指定的 XmlWriter 序列化指定的 Object 并将 XML 文档写入文件
/// </summary>
/// <param name="filePath">XML 文档路径</param>
/// <param name="data">对象</param>
public static void XmlSerialize(string filePath, object data)
{
string directoryPath = filePath.Substring(0, filePath.LastIndexOf("\\"));

if ( ! File.Exists(filePath) )
{
try
{
if ( ! Directory.Exists(directoryPath) )
{
Directory.CreateDirectory(directoryPath);
}

using ( TextWriter textWriter = new StreamWriter(filePath) )
{
XmlSerializer xmlSerializer = new XmlSerializer(data.GetType());
xmlSerializer.Serialize(textWriter, data);
}
}
catch ( Exception e )
{
throw e;
}
}
}


#endregion

#region 反序列化指定 XmlReader 说包含的 XML 文档

/// <summary>
/// 反序列化指定 XmlReader 说包含的 XML 文档
/// </summary>
/// <param name="filePath">XML 文档路径</param>
/// <param name="type">对象类型</param>
/// <returns>对象</returns>
public static object XmlDeserialize(string filePath, Type type)
{
object obj = null;

if ( File.Exists(filePath) )
{
FileStream fileStream = new FileStream(filePath, FileMode.Open);

try
{
XmlSerializer xmlSerializer = new XmlSerializer(type);

obj = xmlSerializer.Deserialize(fileStream);
}
catch ( Exception e )
{
throw e;
}
finally
{
fileStream.Close();
}
}

return obj;
}


#endregion

#region 将指定的 Object 放入高速缓存并使用指定的 XmlWriter 序列化指定的 Object 并将 XML 文档写入文件

/// <summary>
/// 将对象放入高速缓存并使用指定的 XmlWriter 序列化指定的 Object 并将 XML 文档写入文件
/// </summary>
/// <param name="filePath">XML 文档路径</param>
/// <param name="data">对象</param>
/// <param name="serialize">是否本地序列化</param>
public static void CacheSerialize(string filePath, object data, bool serialize)
{
paramCache[filePath] = data;

if ( serialize )
{
XmlSerialize(filePath, data);
}
}

#endregion

#region 读取高速缓存并反序列化指定 XmlReader 说包含的 XML 文档

/// <summary>
/// 读取高速缓存并反序列化指定 XmlReader 说包含的 XML 文档
/// </summary>
/// <param name="filePath">文件路径</param>
/// <param name="type">对象类型</param>
/// <param name="serialize">是否本地序列化</param>
/// <returns>对象</returns>
public static object CacheDeserialize(string filePath, Type type, bool serialize)
{
if ( paramCache[filePath] == null )
{
if ( serialize )
{
paramCache[filePath] = XmlDeserialize(filePath, type);
}
}

return paramCache[filePath];
}

#endregion

 

posted on 2007-09-10 13:03  javaca88  阅读(529)  评论(0编辑  收藏  举报