| 
 | 
	
 
 
 
 
  本篇博文主要介绍如何获取应用的设置和文件容器、如何将数据写入设置、如何从设置中获取数据、如何删除设置中数据、如何将数据写入文件、如何从文件中获取数据。 
   
  当应用安装时,系统会为设置和文件等应用数据提供它自己的每用户数据存储。我们不需要知道这些数据存在哪里或如何存储,因为系统会负责管理物理存储工作。我们只需使用应用数据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。 |   
 
 
 
 | 
  
 | 
 | 
 | 
| 
 | 
 |