qns_fengyusong 发表于 2015-5-23 08:00:20

快速构建Windows 8风格应用26-本地应用数据


  本篇博文主要介绍如何获取应用的设置和文件容器、如何将数据写入设置、如何从设置中获取数据、如何删除设置中数据、如何将数据写入文件、如何从文件中获取数据。
  
  当应用安装时,系统会为设置和文件等应用数据提供它自己的每用户数据存储。我们不需要知道这些数据存在哪里或如何存储,因为系统会负责管理物理存储工作。我们只需使用应用数据API就可以了。
  本地应用数据一般用于当前设备数据的持久化,并且本地数据没有限制大小,通常情况使用本地数据存储大型数据集。
  

如何获取应用的设置和文件容器
  1.使用ApplicationData.LocalSettings属性可以获取ApplicationDataContainer 对象中的设置。



Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
  2.使用 ApplicationData.LocalFolder 属性可以获取StorageFolder 对象中的文件。



Windows.Storage.ApplicationDataContainer localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
如何将数据写入设置
  我们可以通过三种方式将数据写入设置。
  1.使用ApplicationDataContainer.Values属性。



localSettings.Values["exampleSetting"] = "Hello Windows";
  使用键-值对的方式。
  2.使用ApplicationDataCompositeValue对象,进行一个复合的设置。



Windows.Storage.ApplicationDataCompositeValue composite = new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";

localSettings.Values["exampleCompositeSetting"] = composite;
  3.使用ApplicationDataContainer.CreateContainer方法创建设置容器,将数据添加到容器中。



Windows.Storage.ApplicationDataContainer container =
   localSettings.CreateContainer("exampleContainer", Windows.Storage.ApplicationDataCreateDisposition.Always);

if (localSettings.Containers.ContainsKey("exampleContainer"))
{
   localSettings.Containers["exampleContainer"].Values["exampleSetting"] = "Hello Windows";
}
  其中Windows.Storage.ApplicationDataCreateDisposition的枚举值Always表示该容器不存在的话进行创建。

如何从设置中获取数据
  1.使用ApplicationDataContainer.Values属性获取数据。



Object value = localSettings.Values["exampleSetting"];
  
  2.使用ApplicationDataContainer.Values属性获取复合设置中数据。



Windows.Storage.ApplicationDataCompositeValue composite =
   (Windows.Storage.ApplicationDataCompositeValue)localSettings.Values["exampleCompositeSetting"];

if (composite == null)
{   
}
else
{   
}
  
  3.使用ApplicationDataContainer.Values属性获取容器中数据



bool hasContainer = localSettings.Containers.ContainsKey("exampleContainer");
bool hasSetting = false;

if (hasContainer)
{
   hasSetting = localSettings.Containers["exampleContainer"].Values.ContainsKey("exampleSetting");
}
如何删除设置中数据
  1.使用ApplicationDataContainerSettings.Remove方法可以删除数据、复合数据设置以及容器设置。



localSettings.Values.Remove("exampleSetting");
如何将数据写入文件
  通常我们会使用Windows.Storage.StorageFolder.CreateFileAsync和Windows.Storage.FileIO.WriteTextAsync在本地数据存储中创建或更新文件。



async void WriteTimestamp()
{
   Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter =
       new Windows.Globalization.DatetimeFormatting.DateTimeFormatter("longtime");

   StorageFile sampleFile = await localFolder.CreateFileAsync("dataFile.txt",
       CreateCollisionOption.ReplaceExisting);
   await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTime.Now));
}
  其中CreationCollisionOption中的ReplaceExisting值表示若该文件不存在就创建,若存在就替换。

如何从文件中获取数据
  通常我们会使用Windows.Storage.StorageFolder.GetFileAsync、Windows.Storage.StorageFile.GetFileFromApplicationUriAsync 和 Windows.Storage.FileIO.ReadTextAsync在本地数据存储中打开或读取文件。



async void ReadTimestamp()
{
   try
   {
      StorageFile sampleFile = await localFolder.GetFileAsync("dataFile.txt");
      String timestamp = await FileIO.ReadTextAsync(sampleFile);   
   }
   catch (Exception)
   {      
   }
}
  
  MSDN中提供相关示例代码:Application data sample。
页: [1]
查看完整版本: 快速构建Windows 8风格应用26-本地应用数据