快速構建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.CreateFileAsyncWindows.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.GetFileAsyncWindows.Storage.StorageFile.GetFileFromApplicationUriAsyncWindows.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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章