剛查到這個東西時感覺和 Android 的觀念很像,
只有建立它的那個App可以存取自己 Isolated Storage 裡的資料,
會知道這個東西是因為最近寫 WP7 的 App 時,必須存放一些設定在裝置上,
但微軟並沒有開放第三方軟體廠商存取 Registry 的權限,
當然,WP7 中也沒有檔案總管的概念,在放置 App 需要或產生的檔案也是個問題,
而取代的方案就是Isolated Storage
using System.IO.IsolatedStorage;
而使用的方式大致上分為兩大類,和 Android 的獨立記憶體空間 Preference 很像,
● System.IO.IsolatedStorage.IsolatedStorageFile
以應用程式為單位產生的私有檔案系統目錄(虛擬),
存取的方式很簡單,配合 IsolatedStorageFileStream 就可以讀取了,
在應用程式私有的檔案空間中,資料夾與檔案的建立基本上不會有什麼問題,
目前查到的資料顯示,似乎也沒有限制空間的問題,僅受限於硬體空間,
官方參考資料於此:Isolated Storage File 與 Isolated Storage File Stream
● System.IO.IsolatedStorage.IsolatedStorageSettings
以 Key 對應 Value 的方式儲存應用程式私有的設定值,
和舊系統所使用的 Registry 觀念很像,
官方參考資料於此:Isolated Storage Settings
簡單的做個範例,例如在 Android 中這段指令,讓我們可以讀出用戶上次鍵入的帳號密碼,
也許在用戶開啟登入功能時利用讀取 Preferences 並幫他們填上之前的帳號密碼是個不錯的做法。
// Java - Android
import android.content.SharedPreferences;
private Preference pf_UserId, pf_UserPwd;
pf_UserId = findPreference("User_Id");
pf_UserId = findPreference("User_Pwd");
private Preference findPreference(String key)
{
return getPreferenceScreen().findPreference(key);
}
這是 Silverlight 的版本
// C# - Silverlight
using System.IO.IsolatedStorage;
string strUserId, strUserPwd;
private IsolatedStorageSettings userSettings = IsolatedStorageSettings.ApplicationSettings;
if(userSettings.Contains("User_Id"))
{
strUserId = (string)userSettings["User_Id"];
}
else
{
userSettings.Add("User_Id", (object)string.Empty);
}
if(userSettings.Contains("strUserPwd"))
{
try
{
strUserPwd = (string)userSettings["User_Pwd"];
}
cache (System.Collections.Generic.KeyNotFoundException)
{
strUserPwd = string.Empty;
}
}
else
{
userSettings.Add("User_Pwd", (object)string.Empty);
}
txt_UserId.Text = strUserId;
txt_UserPwd.Text = strUserPwd;
// Save Id & Pwd When Login Completed
userSettings["User_Id"] = txt_UserId.Text;
userSettings["User_Pwd"] = txt_UserPwd.Text;
沒有留言:
張貼留言