數據有兩個基本的分類,應用數據和用戶數據,而用戶數據則為由用戶擁有的數據,如文檔,音樂或電子郵件等,下面將大致的介紹一下應用數據的基本操作。
應用數據:應用數據包含APP的狀態信息(如運行時狀態,用戶設置等),包括設置和文件,應用數據在應用程序安裝時有自己的存儲區域,而在卸載時會清空
-
設置:存儲用戶首選項和應用程序狀態,可存儲多種數據類型
- UInt8、Int16、UInt16、Int32、UInt32、Int64、UInt64、Single、Double
- Boolean
- Char16 和 String
- DateTime 和 TimeSpan
- GUID、Point、Size、Rect
- ApplicationDataCompositeValue:一組必須按原子方式序列化和反序列化的相關應用設置。使用復合設置可輕松處理相互依賴的設置的原子更新。系統會在並發訪問和漫游時確保復合設置的完整性。復合設置針對少量數據進行了優化,如果將它們用於大型數據集,性能可能很差。
- 文件:使用文件存儲二進制文件,或自定義的序列化類型
上面提到過應用數據包括設置和文件
而應用數據根據存儲的性質又分為三類:
- 本地數據
- 漫游數據:用戶可輕松地在多個設備之間保持應用的應用數據同步
- 臨時數據:臨時應用數據存儲類似於緩存
所以相應的就有本地設置和本地文件,漫游設置和漫游文件,臨時設置和臨時文件
不同類型的設置和文件的API如下:
- 本地設置:ApplicationData.Current.LocalSettings
- 本地文件:ApplicationData.Current.LocalFolder
- 漫游設置:ApplicationData.Current.RoamingSettings
- 漫游文件:ApplicationData.Current.RoamingFolder
- 臨時設置:ApplicationData.Current.TemporarySettings
- 臨時文件:ApplicationData.Current.TemporaryFolder
設置的基本操作
設置是一個ApplicationDataContainer類型的對象,關於ApplicationDataContainer類的介紹請參照官方文檔 ,這里只是介紹一些簡單的操作。
簡單設置
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;//獲取本地設置,你也可以獲取漫游設置和臨時設置,后面的操作都一樣
localSettings.Values["theme"] = "Light";//在本地設置中添加一個設置項,類似字典賦值方式,theme是localSettings里面的key,而"Light"是值,可以設置的類型在上面已經列出
localSettings.Values.Remove("theme");//刪除設置項
string theme = localSettings.Values["theme"] as string;//讀取設置項
ApplicationDataCompositeValue simpleSettings = new ApplicationDataCompositeValue();//創建簡單設置的容器
simpleSettings["theme"] = "Light"; simpleSettings["FontFamily"] = "微軟雅黑"; localSettings.Values["SimpleSettings"] = simpleSettings;//將復合設置項添加到上面獲取的本地設置中
ApplicationDataCompositeValue advanceSettings = new ApplicationDataCompositeValue();//創建簡單設置的容器
advanceSettings["IsSync"] = false; localSettings.Values["AdvanceSettings"] = advanceSettings;
這樣就可以實現設置項的復合操作,具體操作參照:https://msdn.microsoft.com/zh-cn/library/windows/apps/xaml/windows.storage.applicationdatacontainer.aspx
文件的基本操作
與文件操作相關的兩個基本的類是StorageFile和StorageFoler
StorageFolder folder = ApplicationData.Current.LocalFolder;//獲得本地文件夾 StorageFile file = await folder.CreateFileAsync("first.txt", CreationCollisionOption.OpenIfExists);//創建文件 await FileIO.WriteTextAsync(file, "文本的內容");//使用FileIO將字符串寫入文件 StorageFile fileOpen = folder.GetFileAsync("first.txt"); string content = await FileIO.ReadTextAsync(fileOpen);//讀取文本
以上操作稍作修改就可應用於漫游數據和臨時數據,漫游數據可以實現多設備間的數據同步,但是數據同步有一定的條件。臨時數據類似於緩存,可用於保存一些緩存數據,如微博里的圖片緩存等,系統維護時會自動刪除,或者可以隨時手動刪除。
除了對數據的操作之外,你也可以對數據進行版本控制:使用Application.Version屬性和ApplicationData.SetVersionAsync
以上只是對應用數據的一些簡單操作,熟悉這些操作后你可以實現更高級的操作,具體的操作可以參照官方文檔應用數據和設置。
光說不練假把式,所以如果你看了上述操作后如果不太明白的話那就直接擼代碼,練習中慢慢就會明白,同時如果你發現上述任何錯誤歡迎指正。