分享

silverlight 独立存储

 Wiley Library 2011-09-10

silverlight 独立存储

时间:2010-11-13 07:24来源:博客园 作者:星空有我 点击:209次
独立存储是silverlight提供的一个客户端存储,是一种局部信任机制。 独立存储提供了一个虚拟的文件系统的数据流对象,,是基于.net framework中独立存储建立起来的一个子集。 独立存储具有以下特点: 1、基于silverlight的应用程序被分配了属于它子集的存储空间,但是应用程序的程序集在存储空间中是共享的。 2、 Isolated

  独立存储是silverlight提供的一个客户端存储,是一种局部信任机制。

  独立存储提供了一个虚拟的文件系统的数据流对象,,是基于.net framework中独立存储建立起来的一个子集。

  独立存储具有以下特点:

  1、基于silverlight的应用程序被分配了属于它子集的存储空间,但是应用程序的程序集在存储空间中是共享的。

  2、 IsolatedStorageFileStream 扩展了 FileStream,使用该类可以在独立存储中读取、写入和创建文件。

  独立存储的功能通过密封类 IsolatedStorageFile 提供,位于命名空间System.IO.IsolatedStorage中,该类抽象了独立存储的虚拟文件系统。创建该类的一个实例,可以对文件或者文件 夹进行管理,结合IsolatedStorageFileStream类类管理文件内容。

  结合使用做了一个关于silverlight的独立存储应用的例子解说如下:

 1
            2
            3
            4
             5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            23
            24
            25
            26
            27
/// <summary>
            /// 申请独立存储空间
            /// </summary>
            /// <param name="size"></param>
            /// <returns></returns>
            public static bool ApplayStrogeSpace(double size)
            {
            try
            {
            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、保存数据(支持引用类型的数据)

 1
            2
            3
            4
             5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            23
            24
            25
            26
            27
            28
            29
            30
            31
            32
            33
            34
            35
            36
            37
            38
            39
            40
            41
            42
            43
/// <summary>
            /// 保存字符串到文件
            /// </summary>
            /// <param name="data"></param>
            /// <param name="fileName"></param>
            public static void SaveString(string data, string fileName)
            {
            using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
            {
            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())
            {
            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、提取数据(支持应用类型的数据)

 1
            2
            3
            4
             5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            23
            24
            25
            26
            27
            28
            29
            30
            31
            32
            33
            34
            35
            36
            37
            38
            39
            40
            41
            42
            43
            44
            45
            46
            47
            48
/// <summary>
            /// 返回字符串
            /// </summary>
            /// <param name="fileName"></param>
            /// <returns></returns>
            public static string FindData(string fileName)
            {
            string data = string.Empty;
            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>
            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、删除数据

 1
            2
            3
            4
             5
            6
            7
            8
            9
            10
            11
            12
/// <summary>
            /// 清空独立存储
            /// </summary>
            /// <param name="fileName"></param>
            public static void ReMove(string fileName)
            {
            using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
            {
            if (isf.FileExists(fileName))
            { isf.DeleteFile(fileName); }
            }
            }
            

  这几个处理可以放在一个单独的类中,为其他类提供服务。使用很简单。在这里提供一个示例代码。

源码下载

 

本文来自星空有我的博客,原文地址:http://www.cnblogs.com/Clivia/archive/2010/11/13/silverlight04.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多