Windows Phone開發隔離儲存區 (Isolated Storage)兩種使用方法總結如下:
以前有個錯誤的理解,因為一直用模擬器開發小案例,模擬器重啟之後隔離儲存區 (Isolated Storage)的資料都會被刪除,
就錯誤的以為真機可能也會出現這樣的問題。
其實,不是這樣的。真相是:
模擬器每次啟動都會重新初始化,當然不會儲存。但在真實手機上會永永儲存,就像硬碟,但一旦恢復出廠預設值或者刷機,也會丟失。
另外,由於WP每個應用程式都分配專用空間,所以,如果程式從手機上卸載,隔離儲存中的資料也會丟失。
所以說,在WP手機上原來儲存的資料存放區在隔離儲存區 (Isolated Storage)地區還是很不錯的選擇。
方法一:IsolatedStorageSetting
//儲存資料IsolatedStorageSettings setting = IsolatedStorageSettings.ApplicationSettings; string mykey = "myValue"; string myvalues = ""; if (setting.Contains(mykey)) { setting[mykey] = myTextBox.Text; } else { setting.Add(mykey, myvalues); } setting.Save();//讀取資料IsolatedStorageSettings setting = IsolatedStorageSettings.ApplicationSettings; if (setting.Contains("myValue")) { myTextBlock.Text = setting["myValue"].ToString(); }//刪除資料myTextBox.Text = ""; IsolatedStorageSettings iso = IsolatedStorageSettings.ApplicationSettings; string mykey = "myValue"; if (iso.Contains(mykey)){ iso.Remove(mykey); }
方法二:IsolatedStorageFile
//儲存資料IsolatedStorageFile isolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication(); string fileName = "myFile.txt"; using (var file = new IsolatedStorageFileStream(fileName,FileMode.OpenOrCreate,isolatedStorageFile)) { using (var writer = new StreamWriter(file)) { writer.WriteLine(myTextBox.Text); } }//讀取資料IsolatedStorageFile isolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication(); string fileName = "myFile.txt"; if(isolatedStorageFile.FileExists(fileName)){ using (var file =new IsolatedStorageFileStream(fileName,FileMode.Open,isolatedStorageFile)) { using (var reader = new StreamReader(file)) { myTextBlock.Text = reader.ReadLine(); } } }//刪除資料myTextBox.Text = "";IsolatedStorageFile isolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication(); if (isolatedStorageFile.FileExists("myFile.txt")) { isolatedStorageFile.DeleteFile("myFile.txt"); }
補充常用方法如下:
IsolatedStorage: WeatherInfo temp = null;WeatherInfo w = null;IsolatedStorageSettings iss = IsolatedStorageSettings.ApplicationSettings; if (iss.TryGetValue("WeatherInfo", out temp))//取值先判斷值是否存在 { w = temp;}代碼說明:iss.TryGetValue("WeatherInfo", out temp)返回Boolean類型,temp為輸出,“WeatherInfo”為Key值。