设为首页 收藏本站
查看: 700|回复: 0

win8 app 应用程序数据存储

[复制链接]

尚未签到

发表于 2015-5-21 09:28:36 | 显示全部楼层 |阅读模式
  Win8应用程序数据存储


http://msdn.microsoft.com/library/windows/apps/Hh464917
  如果在调试的时候想要查看当前的数据或文件是否保存成功可以在PC 里面可以查看:
  地址为(因系统安装位置不同可能会有出入,这个是我自己的电脑查看的位置): C:\Users\你的用户名\AppData\Local\Packages\...
  


AppDataMetro App中的存储主要由两种形式,一种是键值对的形式,还有一种是StorageFile文件的存储形式。

//获取应用程序设置的本地数据存储容器
ApplicationDataContainer localSettings =  ApplicationData.Current.LocalSettings;

         //最简单的键值对存储
          localSettings.Values["key"] = "内容...";
          if (localSettings.Values.ContainsKey("key"))
          {
              this.txtBox.Text = localSettings.Values["key"].ToString();
          }

     //删除数据

      private void btnRemove_Click(object sender, RoutedEventArgs e)
      {
          localSettings.Values.Remove("key");

          object obj = localSettings.Values["key"];
          if (obj == null)
          {
              this.txtBox.Text = "空的";
          }
      }








         //获取应用程序设置的本地数据存储容器
          ApplicationDataContainer localSettings =  ApplicationData.Current.LocalSettings;
        
         // 复合值存储
          ApplicationDataCompositeValue compositeValue = new ApplicationDataCompositeValue();
          compositeValue["A"] = "Hello";
          compositeValue["B"] = "World";
          localSettings.Values["key"] = compositeValue;



         if (localSettings.Values.ContainsKey("key"))
          {
              ApplicationDataCompositeValue compositeValue = localSettings.Values["key"] as ApplicationDataCompositeValue;

              this.txtBox.Text = compositeValue["A"].ToString() + "~" + compositeValue["B"].ToString();
          }



          localSettings.Values.Remove("key");
          ApplicationDataCompositeValue compositeValue = localSettings.Values["key"] as ApplicationDataCompositeValue;
          if (compositeValue == null)
          {
              this.txtBox.Text = "空的";
          }



   

//获取应用程序设置的漫游数据存储容器
注: ApplicationDataContainer roamingSettings =  ApplicationData.Current.RoamingSettings;
  

你有两台电脑,都安装了Win 8 , 同时他们都安装了一款应用, 那么只要你用同一个Live 帐号登陆这两台电脑,那么这个应用的RoamingSettings 就会被同步。在两台电脑中是一样的。

LocalSettings :数据仅对本地App有效,不参与同步。
  


          ApplicationDataContainer  localSettings = ApplicationData.Current.LocalSettings;

            //创建一个mtxx 的数据存储容器(在当前设置的容器中创建一个特别指定的数据存储容器)
          ApplicationDataContainer container = localSettings.CreateContainer("mtxx", ApplicationDataCreateDisposition.Always);

           
ApplicationDataCompositeValue compositeValue=new ApplicationDataCompositeValue();
          compositeValue["A"] = "Hello";

          if (localSettings.Containers.ContainsKey("mtxx"))
          {
              localSettings.Containers["mtxx"].Values["key"] = compositeValue;
          }


if (localSettings.Containers["mtxx"].Values.ContainsKey("key"))
          {
              ApplicationDataCompositeValue compositeValue = localSettings.Containers["mtxx"].Values["key"] as ApplicationDataCompositeValue;
              if (compositeValue.ContainsKey("A"))
              {
                  this.txtBox.Text = compositeValue["A"].ToString();
              }
          }


删除数据 删除容器

if (localSettings.Containers.ContainsKey("mtxx"))
            {
                localSettings.Containers["mtxx"].Values.Remove("key");
            }


            ApplicationDataCompositeValue compositeValue = localSettings.Containers["mtxx"].Values["key"] as ApplicationDataCompositeValue;

            if (compositeValue == null)
            {
                this.txtBox.Text = "空的";
            }

            localSettings.DeleteContainer("mtxx");

            if (!localSettings.Containers.ContainsKey("mtxx"))
            {
                MessageDialog messageDialog = new MessageDialog("已删除容器");
                await messageDialog.ShowAsync();
            }
  




















StorageFile的存储,以文件的形式进行存储存入数据
StorageFolder folder=ApplicationData.Current.LocalFolder;

创建本地存储txt文件

   StorageFile file = await folder.CreateFileAsync("mtxx.txt", CreationCollisionOption.ReplaceExisting);
            await FileIO.WriteTextAsync(file, System.DateTime.Now.ToString());


读取本地txt文件

try
            {
                StorageFile file = await folder.GetFileAsync("mtxx.txt");
                if (file != null)
                {
                    this.txtBox.Text = await FileIO.ReadTextAsync(file);
                }
            }
            catch(Exception ex)
            {
                MessageDialog message = new MessageDialog(ex.Message);
                message.ShowAsync();
            }

删除txt 文件

try
            {
                StorageFile file = await folder.GetFileAsync("mtxx.txt");
                if (file != null)
                {
                    await file.DeleteAsync(StorageDeleteOption.PermanentDelete);
                }
            }
            catch (Exception ex)
            {
                MessageDialog message = new MessageDialog(ex.Message);
                message.ShowAsync();
            }































      static async public Task SaveDataToLocalAsync(T data,string fileName)
        {
            StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
            IRandomAccessStream raStream = await file.OpenAsync(FileAccessMode.ReadWrite);
            using (IOutputStream outStream = raStream.GetOutputStreamAt(0))
            {
                DataContractSerializer serializer = new DataContractSerializer(typeof(T));
                serializer.WriteObject(outStream.AsStreamForWrite(), data);
                await outStream.FlushAsync();
            }
        }

        static async public Task GetDataFromLocalAsync(string filename)
        {
            T sessionState_ = default(T);
            try
            {
                StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(filename);
                if (file == null) return sessionState_;
                IInputStream inStream = await file.OpenSequentialReadAsync();
              
                DataContractSerializer serializer = new DataContractSerializer(typeof(T));
                sessionState_ = (T)serializer.ReadObject(inStream.AsStreamForRead());
            }
            catch (Exception)
            {
            
            }
            return sessionState_;
        }




      async private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            List stuList = new List() { new Student{ ID="1",Name="A"},
            new Student{ ID="2",Name="B"},
            new Student{ ID="3",Name="C"},
            new Student{ ID="4",Name="D"}};


            await SaveDataToLocalAsync(stuList, "mtxx.txt");


        }
        
       async private void btnDisplay_Click(object sender, RoutedEventArgs e)
        {
            List stuList = await GetDataFromLocalAsync("mtxx.txt");
            MessageDialog message = new MessageDialog(stuList.Count.ToString());
          await   message.ShowAsync();
        }



  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-69066-1-1.html 上篇帖子: 手把手玩转win8开发系列课程(23) 下篇帖子: Win8:Setting
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表