什么是獨立存儲
獨立存儲(isolatedstorage)這個東西 是首先在SilverLight使用的(好 吧我是因為wp才認識獨立存儲的)
要說明什么是獨立存儲 首先就說什么是獨立(isolated) 獨立就是自個為一體
獨立存儲就是 A程序存的東西只能A用 B不能用 相同道理B的東西只能B自 己用A不能訪問
這樣做的很大好處是能提升安全性 哪怕你自個下載個病毒那病毒也只能在自個 的獨立存儲空間內才能形成破壞
由于wp的獨立存儲其實是“共享存儲”(大家的獨立存儲空間 其實都是共享手機的那塊內存 所謂獨立只是邏輯上的文件形式獨立而不是空間的獨立)
所以wp 手機就算中毒最壞的情況也只是手機空間被撐暴而已(自個理解 歡迎拍磚)
獨立存儲分2種形 式:
1.文件形式的存儲,通過真實的文件和目錄的形式來創建和管理數據
2.設置的形式 ,通過字典的方式創建鍵值對,可用于保存少量的數據(對于實現墓碑機制和諸如軟件的設置一類的話 這貨挺有用的)
首先說明下獨立存儲(IsolatedStorage)是位于 System.IO.IsolatedStorage
當輸入IsoLatedStorage的時候智能提示會有4個跟獨立存儲有關的 。。。這個應該叫選項還是選擇呢?
其中第一個IsolatedStorageException是獨立存儲的異常錯誤
第二個就是用來創建和 管理文件的
第三個則主要是用于讀取,將獨立存儲里存儲的文件已流的形式讀取出來(此類繼 承自FileStream,大部分情況下適用與FileStream的都可以兼容這貨)
第四個則是以設置的形 式獲得獨立存儲區。。(就像剛才說的獨立存儲的2種形式的第二種)
異常沒什么好說的 重點 說第二跟第四個 也就是IsolatedStorageFile 和 IsolatedStorageSettings
IsolatedStorageFile
?
先說如何在獨立存儲里創建一個名叫 hello.txt且里面寫著hello的文本文檔。。
要在獨立存儲區里新建一個文件 首先要先獲得該軟 件(一說用戶)所擁有的獨立存儲區
var appStorage = IsolatedStorageFile.GetUserStoreForApplication();
(。。。第一次寫帶代碼的博客 不會 高亮顯示關鍵字。。。如何弄呢? HTML代碼看著蛋疼啊。。。)
然后創建該文件
var fileName = appStorage.OpenFile(“hello.txt”,FileMode.OpenOrCreate)
對于這句代碼可能 會有疑問,不是說好的創建嗎? 怎么是OpenFIle的?而且appStorage里也有個CreateFile的方法啊
說到這個請注意代碼的后半段,FileMode.OpenOrCreate ?雖說我是用了 OpenFile這個沒錯,不過有FileMode在。。。
OpenOrCreate意味著如果文件當前存在,則讀取 文件,假如不存在,就新建一個,不過這是在你可能擁有文件的前提下才用OpenFile會比較科學,如果 死都要創建新文件的話
如果直接用CreateFIle的話,假如當前獨立存儲區已經有了該文件會報 Exception的
科學的做法是要先確定文件是否存在,如果存在則刪除在創建(懶了。。直接貼我 自己寫的代碼的圖吧)
好了 現在已經有了那個文件了 如何向里面寫入數據呢 這個的話個正常 的其他c#的io操作差不多,直接用StreamWriter就ok了
StreamWriter sw = new StreamWriter (fileName);
sw.WriteLine("hello");
自此就已經完成任務啦,在獨立存儲 區里創建了一個叫 hello.txt的文件且里面寫有hello
另外稍微注意的是獨立存儲是屬于非托管 資源 所以其需要手動釋放(想問為什么??跟Stream為什么需要手動釋放同道理,非托管的不被CLR管 理)
典型的辦法最好是新建獨立存儲的時候用一個using語句圍起來 這樣可以避免忘記 Dispose
另外可能有人問 我存進去了那怎么讀出來呢?基本步驟差不多(我都用了OpenFile了 ,其實就是為了方便,讀寫一體化)
然后StreamWriter換成StreamReader讀出里面的流即可
IsolaterStorageSettings
這個東西會在獨立存儲區內以字典的形式保存數據
感 覺好像是存在一個叫 __ApplicationSettings 的文件里(不知道正確與否 但是用上了Settings的話好 像就鐵定會多出這個文件)
也通過例子來說話
這次的目標是在獨立存儲區保存一個鍵為 "hello”值為"everyone”
首先也要跟File那個差不多獲取當前軟件內所擁有的獨立 存儲區 不過這次獲得的是Settings而不是File了(畢竟我們是要保存到Settings而不是以真實文件形 式保存)
IsolatedStorageSettings setting = IsolatedStorageSettings.ApplicationSettings;
獲取之后其實就可以很簡單的
setting[“鍵的名稱"]=值
新聞熱點
疑難解答