一、Application Data簡介
Applicaion Data相當於案頭應用的註冊表,儲存一些使用者配置資訊,如運行時狀態,使用者喜好等,需要注意的時,當卸載應用時,這些資料會被刪除,所以不要儲存重要資料。
Applicaion Data即使在應用程式更新以後也不會丟失,有一個版本控制。
二、按用途分類
- local 本機資料 只儲存在當前裝置.
- roaming 漫遊資料 安裝了的此使用者的應用都可以同步。windows會自動幫你同步資料到微軟的雲端服務器,但是會限制大小。如果使用者30天內不用這些資料(例如程式卸載),會被伺服器刪除。
- temporary 臨時資料 隨時都可能被系統刪除的資料.
三、按儲存方式分類
App settings
- 用來儲存配置資料,最深32層,不限數量,可以儲存在本地且可以漫遊。
- AppSettings支援除二進位外的所有WinRT資料格式,如果儲存位元據得用檔案。
- 系統只驗證資料格式和長度,不驗證資料是否正確。
用ApplicationData.LocalSettings這個靜態屬性來取得ApplicationDataContainer類類型的配置。
App Files
- 根目錄下有三個系統自訂的檔案夾:本地,漫遊,臨時。
- 可以自己建檔案夾,但是最多不超過32層,同樣不限數量。
用ApplicationData.LocalFolder這個靜態屬性來取StorageFolder類型的檔案。
四、程式碼範例
儲存本機資料
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;//儲存單一配置的控制代碼 ApplicationDataCompositeValue composite = new ApplicationDataCompositeValue();//儲存多項配置控制代碼 StorageFolder localFolder = ApplicationData.Current.LocalFolder;//隱藏檔控制代碼
localSettings.Values["exampleSetting"] = "Hello Windows";;//儲存單一配置
composite["intVal"] = 1;
composite["strVal"] = "string";
localSettings.Values["exampleCompositeSetting"] = composite;//儲存多項配置
建立配置層級
ApplicationDataContainer container = localSettings.CreateContainer("exampleContainer", ApplicationDataCreateDisposition.Always);if (localSettings.Containers.ContainsKey("exampleContainer")){ localSettings.Containers["exampleContainer"].Values["exampleSetting"] = "Hello Windows";}
讀取配置
Object value = localSettings.Values["exampleSetting"];//a settingApplicationDataCompositeValue composite = (ApplicationDataCompositeValue)localSettings.Values["exampleCompositeSetting"];if (composite == null){ // No data}else{ // Access data in composite["intVal"] and composite["strVal"]}bool hasContainer = localSettings.Containers.ContainsKey("exampleContainer");bool hasSetting = false;if (hasContainer){ hasSetting = localSettings.Containers["exampleContainer"].Values.ContainsKey("exampleSetting");}
刪除配置
localSettings.Values.Remove("exampleSetting");//ApplicationDataContainerSettings.Remove localSettings.Values.Remove("exampleCompositeSetting");//ApplicationDataCompositeValue.Remove localSettings.DeleteContainer("exampleContainer");//ApplicationDataContainer.DeleteContainer