独立存储是silverlight提供的一个客户端存储,是一种局部信任机制。
独立存储提供了一个虚拟的文件系统的数据流对象,,是基于.net framework中独立存储建立起来的一个子集。
独立存储具有以下特点:
1、基于silverlight的应用程序被分配了属于它子集的存储空间,但是应用程序的程序集在存储空间中是共享的。
2、 IsolatedStoragefileStream 扩展了 fileStream,使用该类可以在独立存储中读取、写入和创建文件。
独立存储的功能通过密封类 IsolatedStoragefile 提供,位于命名空间System.IO.IsolatedStorage中,该类抽象了独立存储的虚拟文件系统。创建该类的一个实例,可以对文件或者文件夹进行管理,结合IsolatedStoragefileStream类类管理文件内容。
结合使用做了一个关于silverlight的独立存储应用的例子解说如下:
1、申请独立存储空间
/// <summary> /// 申请独立存储空间 /// </summary> /// <param name="size"></param> /// <returns></returns> public static bool ApplayStrogeSpace( double size) { try @H_502_97@ { using (var store = IsolatedStoragefile.GetUserStoreForApplication()) { Int64 quotSize = Convert.ToInt64(size * 1024); Int64 curSize = store.AvailableFreeSpace; if (curSize < quotSize) { if (store.IncreaseQuotaTo(quotSize)) { return true ; } else { return false ; } } else { return true ; } } } catch (IsolatedStorageException ex) { throw new IsolatedStorageException( "申请独立存储空间失败!" + ex.Message); } } |
2、保存数据(支持引用类型的数据)
/// <summary> /// 保存字符串到文件 /// </summary> /// <param name="data"></param> /// <param name="filename"></param> public static voID SaveString( string data, string filename) { using (IsolatedStoragefile isf = IsolatedStoragefile.GetUserStoreForApplication()) @H_502_97@ { if (isf.fileExists(filename)) { isf.Deletefile(filename); } using (IsolatedStoragefileStream isfs = new IsolatedStoragefileStream(filename,fileMode.Create,isf)) { using (var sw = new StreamWriter(isfs)) { sw.Write(data); sw.Close(); } } } } /// <summary> /// 泛类型支持存储文件 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="Tdata"></param> /// <param name="filename"></param> public static voID SaveTData<T>(T Tdata, string filename) { using (IsolatedStoragefile isf = IsolatedStoragefile.GetUserStoreForApplication()) { @H_355_502@ if (isf.fileExists(filename)) { isf.Deletefile(filename); } IsolatedStoragefileStream isfs = isf.Createfile(filename); DataContractSerializer ser = new DataContractSerializer( typeof (T)); ser.WriteObject(isfs,Tdata); isfs.Close(); } } |
3、提取数据(支持应用类型的数据)
? /// <summary> /// 返回字符串 /// </summary> /// <param name="filename"></param> /// <returns></returns> public static string FindData( string filename) { string data = string .Empty; @H_502_97@ using (IsolatedStoragefile isf = IsolatedStoragefile.GetUserStoreForApplication()) { if (isf.fileExists(filename)) { using (var isfs = new IsolatedStoragefileStream(filename,fileMode.Open,isf)) { using (var sr = new StreamReader(isfs)) { string lineData; while ((lineData = sr.Readline()) != null ) { data += lineData; } } } } } return data; } /// <summary> /// 泛类型返回 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="filename"></param> /// <returns></returns> @H_355_502@ public static T FindTData<T>( string filename) { T data = default (T); using (IsolatedStoragefile isf = IsolatedStoragefile.GetUserStoreForApplication()) { if (isf.fileExists(filename)) { IsolatedStoragefileStream isfs = isf.Openfile(filename,fileMode.Open); var ser = new DataContractSerializer( typeof (T)); data = (T)ser.Readobject(isfs); isfs.Close(); } } return data; } |
4、删除数据
/// <summary> /// 清空独立存储 /// </summary> /// <param name="filename"></param> public static voID ReMove( string filename) { using (IsolatedStoragefile isf = IsolatedStoragefile.GetUserStoreForApplication()) { @H_502_97@ if (isf.fileExists(filename)) { isf.Deletefile(filename); } } } |
这几个处理可以放在一个单独的类中,为其他类提供服务。使用很简单。在这里提供一个示例代码:http://files.cnblogs.com/Clivia/IsoLatedStroage.rar
总结以上是内存溢出为你收集整理的silverlight 独立存储全部内容,希望文章能够帮你解决silverlight 独立存储所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)